Fix memory leak in ossl_rsa_fromdata.
authorslontis <shane.lontis@oracle.com>
Fri, 24 Jun 2022 04:01:07 +0000 (14:01 +1000)
committerTomas Mraz <tomas@openssl.org>
Tue, 28 Jun 2022 15:08:42 +0000 (17:08 +0200)
Occurs if a malloc failure happens inside collect_numbers()

Reported via #18365

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Bernd Edlinger <bernd.edlinger@hotmail.de>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/18646)

(cherry picked from commit 28adea95975c3ea53fc590efda35dee13efd4767)

crypto/rsa/rsa_backend.c

index 254ebdb24287b6614361916480a285d7aebcb2a3..58187fa2ef59df0cd337ed3d6e0813d5c0d7dda7 100644 (file)
@@ -49,9 +49,12 @@ static int collect_numbers(STACK_OF(BIGNUM) *numbers,
         if (p != NULL) {
             BIGNUM *tmp = NULL;
 
-            if (!OSSL_PARAM_get_BN(p, &tmp)
-                || sk_BIGNUM_push(numbers, tmp) == 0)
+            if (!OSSL_PARAM_get_BN(p, &tmp))
                 return 0;
+            if (sk_BIGNUM_push(numbers, tmp) == 0) {
+                BN_clear_free(tmp);
+                return 0;
+            }
         }
     }