reject zero length point format list or supported curves extensions
authorDr. Stephen Henson <steve@openssl.org>
Thu, 22 Nov 2012 14:15:00 +0000 (14:15 +0000)
committerDr. Stephen Henson <steve@openssl.org>
Thu, 22 Nov 2012 14:15:00 +0000 (14:15 +0000)
ssl/t1_lib.c

index eb5c0c5f53817bf4d2dd76a952837677d9c8d115..ffd5bf294e025123c5079a19a81ae76e29830642 100644 (file)
@@ -806,7 +806,8 @@ int ssl_parse_clienthello_tlsext(SSL *s, unsigned char **p, unsigned char *d, in
                        int ellipticcurvelist_length = (*(sdata++) << 8);
                        ellipticcurvelist_length += (*(sdata++));
 
-                       if (ellipticcurvelist_length != size - 2)
+                       if (ellipticcurvelist_length != size - 2 ||
+                               ellipticcurvelist_length < 1)
                                {
                                *al = TLS1_AD_DECODE_ERROR;
                                return 0;
@@ -1065,7 +1066,8 @@ int ssl_parse_serverhello_tlsext(SSL *s, unsigned char **p, unsigned char *d, in
                        unsigned char *sdata = data;
                        int ecpointformatlist_length = *(sdata++);
 
-                       if (ecpointformatlist_length != size - 1)
+                       if (ecpointformatlist_length != size - 1 || 
+                               ecpointformatlist_length < 1)
                                {
                                *al = TLS1_AD_DECODE_ERROR;
                                return 0;