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:54:10 +0000 (11:54 +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 dead126184a84fc15bb8a2030fd6b1c5b207c8c1..e11746a6950890bab0a604ba0d19ee3a99ff5747 100644 (file)
@@ -1440,9 +1440,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);
     }