check the return value of BN_dup() in rsa_lib.c:1248
@@ -1244,8 +1244,11 @@ int EVP_PKEY_CTX_set1_rsa_keygen_pubexp(EVP_PKEY_CTX *ctx, BIGNUM *pubexp)
* When we're dealing with a provider, there's no need to duplicate
* pubexp, as it gets copied when transforming to an OSSL_PARAM anyway.
*/
- if (evp_pkey_ctx_is_legacy(ctx))
+ if (evp_pkey_ctx_is_legacy(ctx)) {
pubexp = BN_dup(pubexp);
+ if (pubexp == NULL)
+ return 0;
+ }
ret = EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA, EVP_PKEY_OP_KEYGEN,
EVP_PKEY_CTRL_RSA_KEYGEN_PUBEXP, 0, pubexp);
if (evp_pkey_ctx_is_legacy(ctx) && ret <= 0)
