Coverity 1521490: resource leak
authorPauli <pauli@openssl.org>
Tue, 14 Mar 2023 01:04:11 +0000 (12:04 +1100)
committerPauli <pauli@openssl.org>
Wed, 15 Mar 2023 08:58:07 +0000 (19:58 +1100)
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Shane Lontis <shane.lontis@oracle.com>
(Merged from https://github.com/openssl/openssl/pull/20504)

ssl/ssl_cert.c

index 1c4f452997ae46eb7b8332c78540933db1e0c47d..f35ec2ab680140fdf64d5e455d60098856216061 100644 (file)
@@ -106,14 +106,17 @@ CERT *ssl_cert_dup(CERT *cert)
 
     ret->ssl_pkey_num = cert->ssl_pkey_num;
     ret->pkeys = OPENSSL_zalloc(ret->ssl_pkey_num * sizeof(CERT_PKEY));
-    if (ret->pkeys == NULL)
+    if (ret->pkeys == NULL) {
+        OPENSSL_free(ret);
         return NULL;
+    }
 
     ret->references = 1;
     ret->key = &ret->pkeys[cert->key - cert->pkeys];
     ret->lock = CRYPTO_THREAD_lock_new();
     if (ret->lock == NULL) {
         ERR_raise(ERR_LIB_SSL, ERR_R_CRYPTO_LIB);
+        OPENSSL_free(ret->pkeys);
         OPENSSL_free(ret);
         return NULL;
     }