Fix race condition in ssl_parse_serverhello_tlsext
CVE-2014-3509 Reviewed-by: Tim Hudson <tjh@openssl.org> Reviewed-by: Dr. Stephen Henson <steve@openssl.org>
This commit is contained in:
parent
0042fb5fd1
commit
fb0bc2b273
17
ssl/t1_lib.c
17
ssl/t1_lib.c
@ -2647,15 +2647,18 @@ static int ssl_scan_serverhello_tlsext(SSL *s, unsigned char **p, unsigned char
|
|||||||
*al = TLS1_AD_DECODE_ERROR;
|
*al = TLS1_AD_DECODE_ERROR;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
s->session->tlsext_ecpointformatlist_length = 0;
|
if (!s->hit)
|
||||||
if (s->session->tlsext_ecpointformatlist != NULL) OPENSSL_free(s->session->tlsext_ecpointformatlist);
|
|
||||||
if ((s->session->tlsext_ecpointformatlist = OPENSSL_malloc(ecpointformatlist_length)) == NULL)
|
|
||||||
{
|
{
|
||||||
*al = TLS1_AD_INTERNAL_ERROR;
|
s->session->tlsext_ecpointformatlist_length = 0;
|
||||||
return 0;
|
if (s->session->tlsext_ecpointformatlist != NULL) OPENSSL_free(s->session->tlsext_ecpointformatlist);
|
||||||
|
if ((s->session->tlsext_ecpointformatlist = OPENSSL_malloc(ecpointformatlist_length)) == NULL)
|
||||||
|
{
|
||||||
|
*al = TLS1_AD_INTERNAL_ERROR;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
s->session->tlsext_ecpointformatlist_length = ecpointformatlist_length;
|
||||||
|
memcpy(s->session->tlsext_ecpointformatlist, sdata, ecpointformatlist_length);
|
||||||
}
|
}
|
||||||
s->session->tlsext_ecpointformatlist_length = ecpointformatlist_length;
|
|
||||||
memcpy(s->session->tlsext_ecpointformatlist, sdata, ecpointformatlist_length);
|
|
||||||
#if 0
|
#if 0
|
||||||
fprintf(stderr,"ssl_parse_serverhello_tlsext s->session->tlsext_ecpointformatlist ");
|
fprintf(stderr,"ssl_parse_serverhello_tlsext s->session->tlsext_ecpointformatlist ");
|
||||||
sdata = s->session->tlsext_ecpointformatlist;
|
sdata = s->session->tlsext_ecpointformatlist;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user