Check sk_SSL_CIPHER_new_null return value
authorMatt Caswell <matt@openssl.org>
Sat, 9 May 2015 05:51:25 +0000 (13:51 +0800)
committerMatt Caswell <matt@openssl.org>
Mon, 11 May 2015 10:53:50 +0000 (11:53 +0100)
If sk_SSL_CIPHER_new_null() returns NULL then ssl_bytes_to_cipher_list()
should also return NULL.

Based on an original patch by mrpre <mrpre@163.com>.

Reviewed-by: Rich Salz <rsalz@openssl.org>
(cherry picked from commit 14def5f5375594830597cc153e11c6017f6adddf)

ssl/ssl_lib.c

index 38426b4f9c96a7684841831059c94415e6ce569f..b60fe1a898647aa9270aac289fae42f6e539ff94 100644 (file)
@@ -1510,9 +1510,13 @@ STACK_OF(SSL_CIPHER) *ssl_bytes_to_cipher_list(SSL *s, unsigned char *p,
                SSL_R_ERROR_IN_RECEIVED_CIPHER_LIST);
         return (NULL);
     }
-    if ((skp == NULL) || (*skp == NULL))
+    if ((skp == NULL) || (*skp == NULL)) {
         sk = sk_SSL_CIPHER_new_null(); /* change perhaps later */
-    else {
+        if(sk == NULL) {
+            SSLerr(SSL_F_SSL_BYTES_TO_CIPHER_LIST, ERR_R_MALLOC_FAILURE);
+            return NULL;
+        }
+    } else {
         sk = *skp;
         sk_SSL_CIPHER_zero(sk);
     }