Add custom extension sanity checks.
Reject attempts to use extensions handled internally. Add flags to each extension structure to indicate if an extension has been sent or received. Enforce RFC5246 compliance by rejecting duplicate extensions and unsolicited extensions and only send a server extension if we have sent the corresponding client extension. Reviewed-by: Emilia Käsper <emilia@openssl.org>
This commit is contained in:
@@ -1480,7 +1480,7 @@ unsigned char *ssl_add_clienthello_tlsext(SSL *s, unsigned char *buf, unsigned c
|
||||
}
|
||||
ret += el;
|
||||
}
|
||||
|
||||
custom_ext_init(&s->cert->cli_ext);
|
||||
/* Add custom TLS Extensions to ClientHello */
|
||||
if (!custom_ext_add(s, 0, &ret, limit, al))
|
||||
return NULL;
|
||||
@@ -2485,6 +2485,7 @@ static int ssl_scan_clienthello_tlsext(SSL *s, unsigned char **p, unsigned char
|
||||
int ssl_parse_clienthello_tlsext(SSL *s, unsigned char **p, unsigned char *d, int n)
|
||||
{
|
||||
int al = -1;
|
||||
custom_ext_init(&s->cert->srv_ext);
|
||||
if (ssl_scan_clienthello_tlsext(s, p, d, n, &al) <= 0)
|
||||
{
|
||||
ssl3_send_alert(s,SSL3_AL_FATAL,al);
|
||||
|
||||
Reference in New Issue
Block a user