Fix memory leaks in the Certificate extensions code
authorMatt Caswell <matt@openssl.org>
Wed, 25 Jan 2017 14:45:12 +0000 (14:45 +0000)
committerMatt Caswell <matt@openssl.org>
Wed, 25 Jan 2017 14:54:54 +0000 (14:54 +0000)
After collecting extensions we must free them again.

Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/2284)

ssl/statem/statem_clnt.c
ssl/statem/statem_srvr.c

index 80ae480b12103e12b4f8010110ad6b7762c78957..6599d432e62428a8db52e323b7af4d5ad5e966c2 100644 (file)
@@ -1425,8 +1425,11 @@ MSG_PROCESS_RETURN tls_process_server_certificate(SSL *s, PACKET *pkt)
             if (!tls_collect_extensions(s, &extensions, EXT_TLS1_3_CERTIFICATE,
                                         &rawexts, &al)
                     || !tls_parse_all_extensions(s, EXT_TLS1_3_CERTIFICATE,
-                                                 rawexts, x, chainidx, &al))
+                                                 rawexts, x, chainidx, &al)) {
+                OPENSSL_free(rawexts);
                 goto f_err;
+            }
+            OPENSSL_free(rawexts);
         }
 
         if (!sk_X509_push(sk, x)) {
index 4d6afd6bc5f6446961ab04e63bf02c1a79d171ca..3bde0d6b4aeae03047057e3de0f2de641ba6d2f6 100644 (file)
@@ -3061,8 +3061,11 @@ MSG_PROCESS_RETURN tls_process_client_certificate(SSL *s, PACKET *pkt)
             if (!tls_collect_extensions(s, &extensions, EXT_TLS1_3_CERTIFICATE,
                                         &rawexts, &al)
                     || !tls_parse_all_extensions(s, EXT_TLS1_3_CERTIFICATE,
-                                                 rawexts, x, chainidx, &al))
+                                                 rawexts, x, chainidx, &al)) {
+                OPENSSL_free(rawexts);
                 goto f_err;
+            }
+            OPENSSL_free(rawexts);
         }
 
         if (!sk_X509_push(sk, x)) {