Remove serverinfo checks.
Since sanity checks are performed for all custom extensions the serverinfo checks are no longer needed. Reviewed-by: Emilia Käsper <emilia@openssl.org> (cherry picked from commit 707b026d7871eb12c23671c975e6a15a8c331785) Conflicts: ssl/ssl3.h ssl/t1_lib.c
This commit is contained in:
parent
9346c75cb8
commit
cd2e17020e
10
ssl/s3_lib.c
10
ssl/s3_lib.c
@ -3027,10 +3027,6 @@ void ssl3_free(SSL *s)
|
|||||||
|
|
||||||
#ifndef OPENSSL_NO_SRP
|
#ifndef OPENSSL_NO_SRP
|
||||||
SSL_SRP_CTX_free(s);
|
SSL_SRP_CTX_free(s);
|
||||||
#endif
|
|
||||||
#ifndef OPENSSL_NO_TLSEXT
|
|
||||||
if (s->s3->serverinfo_client_tlsext_custom_types != NULL)
|
|
||||||
OPENSSL_free(s->s3->serverinfo_client_tlsext_custom_types);
|
|
||||||
#endif
|
#endif
|
||||||
OPENSSL_cleanse(s->s3,sizeof *s->s3);
|
OPENSSL_cleanse(s->s3,sizeof *s->s3);
|
||||||
OPENSSL_free(s->s3);
|
OPENSSL_free(s->s3);
|
||||||
@ -3076,12 +3072,6 @@ void ssl3_clear(SSL *s)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifndef OPENSSL_NO_TLSEXT
|
#ifndef OPENSSL_NO_TLSEXT
|
||||||
if (s->s3->serverinfo_client_tlsext_custom_types != NULL)
|
|
||||||
{
|
|
||||||
OPENSSL_free(s->s3->serverinfo_client_tlsext_custom_types);
|
|
||||||
s->s3->serverinfo_client_tlsext_custom_types = NULL;
|
|
||||||
}
|
|
||||||
s->s3->serverinfo_client_tlsext_custom_types_count = 0;
|
|
||||||
#ifndef OPENSSL_NO_EC
|
#ifndef OPENSSL_NO_EC
|
||||||
s->s3->is_probably_safari = 0;
|
s->s3->is_probably_safari = 0;
|
||||||
#endif /* !OPENSSL_NO_EC */
|
#endif /* !OPENSSL_NO_EC */
|
||||||
|
@ -568,13 +568,6 @@ typedef struct ssl3_state_st
|
|||||||
char is_probably_safari;
|
char is_probably_safari;
|
||||||
#endif /* !OPENSSL_NO_EC */
|
#endif /* !OPENSSL_NO_EC */
|
||||||
|
|
||||||
/* serverinfo_client_tlsext_custom_types contains an array of TLS Extension types which
|
|
||||||
* were advertised by the client in its ClientHello and leveraged by ServerInfo TLS extension callbacks.
|
|
||||||
* The array does not contain any duplicates, and is in the same order
|
|
||||||
* as the types were received in the client hello. */
|
|
||||||
unsigned short *serverinfo_client_tlsext_custom_types;
|
|
||||||
size_t serverinfo_client_tlsext_custom_types_count; /* how many serverinfo_client_tlsext_custom_types */
|
|
||||||
|
|
||||||
/* ALPN information
|
/* ALPN information
|
||||||
* (we are in the process of transitioning from NPN to ALPN.) */
|
* (we are in the process of transitioning from NPN to ALPN.) */
|
||||||
|
|
||||||
|
@ -848,7 +848,6 @@ static int serverinfo_srv_first_cb(SSL *s, unsigned short ext_type,
|
|||||||
unsigned short inlen, int *al,
|
unsigned short inlen, int *al,
|
||||||
void *arg)
|
void *arg)
|
||||||
{
|
{
|
||||||
size_t i = 0;
|
|
||||||
|
|
||||||
if (inlen != 0)
|
if (inlen != 0)
|
||||||
{
|
{
|
||||||
@ -856,28 +855,6 @@ static int serverinfo_srv_first_cb(SSL *s, unsigned short ext_type,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* if already in list, error out */
|
|
||||||
for (i = 0; i < s->s3->serverinfo_client_tlsext_custom_types_count; i++)
|
|
||||||
{
|
|
||||||
if (s->s3->serverinfo_client_tlsext_custom_types[i] == ext_type)
|
|
||||||
{
|
|
||||||
*al = SSL_AD_DECODE_ERROR;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
s->s3->serverinfo_client_tlsext_custom_types_count++;
|
|
||||||
s->s3->serverinfo_client_tlsext_custom_types = OPENSSL_realloc(
|
|
||||||
s->s3->serverinfo_client_tlsext_custom_types,
|
|
||||||
s->s3->serverinfo_client_tlsext_custom_types_count * 2);
|
|
||||||
if (s->s3->serverinfo_client_tlsext_custom_types == NULL)
|
|
||||||
{
|
|
||||||
s->s3->serverinfo_client_tlsext_custom_types_count = 0;
|
|
||||||
*al = TLS1_AD_INTERNAL_ERROR;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
s->s3->serverinfo_client_tlsext_custom_types[
|
|
||||||
s->s3->serverinfo_client_tlsext_custom_types_count - 1] = ext_type;
|
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -887,22 +864,6 @@ static int serverinfo_srv_second_cb(SSL *s, unsigned short ext_type,
|
|||||||
{
|
{
|
||||||
const unsigned char *serverinfo = NULL;
|
const unsigned char *serverinfo = NULL;
|
||||||
size_t serverinfo_length = 0;
|
size_t serverinfo_length = 0;
|
||||||
size_t i = 0;
|
|
||||||
unsigned int match = 0;
|
|
||||||
/* Did the client send a TLS extension for this type? */
|
|
||||||
for (i = 0; i < s->s3->serverinfo_client_tlsext_custom_types_count; i++)
|
|
||||||
{
|
|
||||||
if (s->s3->serverinfo_client_tlsext_custom_types[i] == ext_type)
|
|
||||||
{
|
|
||||||
match = 1;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!match)
|
|
||||||
{
|
|
||||||
/* extension not sent by client...don't send extension */
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Is there serverinfo data for the chosen server cert? */
|
/* Is there serverinfo data for the chosen server cert? */
|
||||||
if ((ssl_get_server_cert_serverinfo(s, &serverinfo,
|
if ((ssl_get_server_cert_serverinfo(s, &serverinfo,
|
||||||
|
@ -1868,14 +1868,6 @@ static int ssl_scan_clienthello_tlsext(SSL *s, unsigned char **p, unsigned char
|
|||||||
s->s3->next_proto_neg_seen = 0;
|
s->s3->next_proto_neg_seen = 0;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Clear observed custom extensions */
|
|
||||||
s->s3->serverinfo_client_tlsext_custom_types_count = 0;
|
|
||||||
if (s->s3->serverinfo_client_tlsext_custom_types != NULL)
|
|
||||||
{
|
|
||||||
OPENSSL_free(s->s3->serverinfo_client_tlsext_custom_types);
|
|
||||||
s->s3->serverinfo_client_tlsext_custom_types = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (s->s3->alpn_selected)
|
if (s->s3->alpn_selected)
|
||||||
{
|
{
|
||||||
OPENSSL_free(s->s3->alpn_selected);
|
OPENSSL_free(s->s3->alpn_selected);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user