Commit 0ab1125b1d for openssl.org
commit 0ab1125b1d45200de7fa71138f2f9e7fee0838ad
Author: Greensi7 <adam.tabak04@gmail.com>
Date: Fri Sep 4 22:28:32 2026 +0200
Add X509_REQ_dup MFAIL test
Test targeting NULL dereference and memory leak in ASN1_item_dup().
Reviewed-by: Mounir Idrassi <mounir.idrassi@idrix.fr>
Reviewed-by: Bob Beck <beck@openssl.org>
Merge-date: Tue Sep 15 10:30:31 2026
Merged-from: https://github.com/openssl/openssl/pull/32691
diff --git a/test/asn1_internal_test.c b/test/asn1_internal_test.c
index c5a9e41a65..dd831fae7b 100644
--- a/test/asn1_internal_test.c
+++ b/test/asn1_internal_test.c
@@ -683,6 +683,33 @@ err:
return ok;
}
+#ifndef OPENSSL_NO_ECX
+static int test_asn1_item_dup_mfail(void)
+{
+ EVP_PKEY *key = NULL;
+ X509_REQ *src = NULL, *dup = NULL;
+ int ret = -1;
+
+ if (!TEST_ptr(key = EVP_PKEY_Q_keygen(NULL, NULL, "ED25519"))
+ || !TEST_ptr(src = X509_REQ_new_ex(NULL, ""))
+ || !TEST_true(X509_REQ_set_version(src, X509_REQ_VERSION_1))
+ || !TEST_true(X509_REQ_set_pubkey(src, key))
+ || !TEST_int_gt(X509_REQ_sign(src, key, NULL), 0))
+ goto end;
+
+ MFAIL_start();
+ dup = X509_REQ_dup(src);
+ MFAIL_end();
+
+ ret = dup != NULL;
+end:
+ EVP_PKEY_free(key);
+ X509_REQ_free(src);
+ X509_REQ_free(dup);
+ return ret;
+}
+#endif
+
int setup_tests(void)
{
ADD_TEST(test_tbl_standard);
@@ -698,5 +725,8 @@ int setup_tests(void)
ADD_TEST(test_ossl_uni2utf8);
ADD_TEST(test_empty_uni_conversions);
ADD_TEST(test_asn1_string_to_utf8);
+#ifndef OPENSSL_NO_ECX
+ ADD_MFAIL_NO_CHECK_TEST(test_asn1_item_dup_mfail);
+#endif
return 1;
}