diff options
author | Jung-uk Kim <jkim@FreeBSD.org> | 2012-06-27 16:44:58 +0000 |
---|---|---|
committer | Jung-uk Kim <jkim@FreeBSD.org> | 2012-06-27 16:44:58 +0000 |
commit | 2b8b5455829304396e38200c205612c4dc57c052 (patch) | |
tree | cc5cd6657453d80b7eafb3ba5cc4ef4fd66c176f /ssl/t1_lib.c | |
parent | fd3744ddb062b70bb370acec340acbac23f0bd98 (diff) | |
download | src-2b8b5455829304396e38200c205612c4dc57c052.tar.gz src-2b8b5455829304396e38200c205612c4dc57c052.zip |
Import OpenSSL 0.9.8x.vendor/openssl/0.9.8x
Notes
Notes:
svn path=/vendor-crypto/openssl/dist/; revision=237653
svn path=/vendor-crypto/openssl/0.9.8x/; revision=237654; tag=vendor/openssl/0.9.8x
Diffstat (limited to 'ssl/t1_lib.c')
-rw-r--r-- | ssl/t1_lib.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/ssl/t1_lib.c b/ssl/t1_lib.c index 0cc8320e1789..cc97258ae536 100644 --- a/ssl/t1_lib.c +++ b/ssl/t1_lib.c @@ -521,6 +521,7 @@ int ssl_parse_clienthello_tlsext(SSL *s, unsigned char **p, unsigned char *d, in } n2s(data, idsize); dsize -= 2 + idsize; + size -= 2 + idsize; if (dsize < 0) { *al = SSL_AD_DECODE_ERROR; @@ -559,9 +560,14 @@ int ssl_parse_clienthello_tlsext(SSL *s, unsigned char **p, unsigned char *d, in } /* Read in request_extensions */ + if (size < 2) + { + *al = SSL_AD_DECODE_ERROR; + return 0; + } n2s(data,dsize); size -= 2; - if (dsize > size) + if (dsize != size) { *al = SSL_AD_DECODE_ERROR; return 0; @@ -569,6 +575,12 @@ int ssl_parse_clienthello_tlsext(SSL *s, unsigned char **p, unsigned char *d, in sdata = data; if (dsize > 0) { + if (s->tlsext_ocsp_exts) + { + sk_X509_EXTENSION_pop_free(s->tlsext_ocsp_exts, + X509_EXTENSION_free); + } + s->tlsext_ocsp_exts = d2i_X509_EXTENSIONS(NULL, &sdata, dsize); |