Fix error path in int create_ssl_ctx_pair()
authorMatt Caswell <matt@openssl.org>
Wed, 13 May 2020 13:45:36 +0000 (14:45 +0100)
committerMatt Caswell <matt@openssl.org>
Fri, 5 Jun 2020 09:31:58 +0000 (10:31 +0100)
If we hit the error path and create_ssl_ctx_pair has been passed a
pre-created SSL_CTX then we could end up with a double free.

Reviewed-by: Shane Lontis <shane.lontis@oracle.com>
(Merged from https://github.com/openssl/openssl/pull/11834)

test/ssltestlib.c

index ce0e77611038a79699639b0ce41ab8919722596e..96c1a7f2de9176ceeaf84d8dd98e5015387a97d8 100644 (file)
@@ -741,8 +741,10 @@ const SSL_METHOD *cm,
     return 1;
 
  err:
-    SSL_CTX_free(serverctx);
-    SSL_CTX_free(clientctx);
+    if (*sctx == NULL)
+        SSL_CTX_free(serverctx);
+    if (cctx != NULL && *cctx == NULL)
+        SSL_CTX_free(clientctx);
     return 0;
 }