From 67e696b430716f95ed714f2c1404681697251438 Mon Sep 17 00:00:00 2001 From: Ben Taylor Date: Thu, 30 Apr 2026 13:09:10 +0100 Subject: [PATCH 01/12] Add fix for stale pointer after mbedtls_pkcs7_free Signed-off-by: Ben Taylor --- library/pkcs7.c | 2 +- tests/suites/test_suite_pkcs7.data | 4 ++ tests/suites/test_suite_pkcs7.function | 59 ++++++++++++++++++++++++++ 3 files changed, 64 insertions(+), 1 deletion(-) diff --git a/library/pkcs7.c b/library/pkcs7.c index 2cc7812bf0..e345d4b980 100644 --- a/library/pkcs7.c +++ b/library/pkcs7.c @@ -766,7 +766,7 @@ void mbedtls_pkcs7_free(mbedtls_pkcs7 *pkcs7) mbedtls_free(signer_prev); } - pkcs7->raw.p = NULL; + mbedtls_platform_zeroize(pkcs7, sizeof(*pkcs7)); } #endif diff --git a/tests/suites/test_suite_pkcs7.data b/tests/suites/test_suite_pkcs7.data index 3e3f7f1d7d..7e220fc2e6 100644 --- a/tests/suites/test_suite_pkcs7.data +++ b/tests/suites/test_suite_pkcs7.data @@ -14,6 +14,10 @@ PKCS7 Signed Data Parse with zero signers depends_on:PSA_WANT_ALG_SHA_256 pkcs7_parse:"../framework/data_files/pkcs7_data_no_signers.der":MBEDTLS_PKCS7_SIGNED_DATA +PKCS7 Signed Data Parse reused object after multiple signers +depends_on:PSA_WANT_ALG_SHA_256:PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY +pkcs7_parse_reuse:"../framework/data_files/pkcs7_data_multiple_signed.der":"../framework/data_files/pkcs7_data_no_signers.der":MBEDTLS_PKCS7_SIGNED_DATA + PKCS7 Signed Data Parse Fail with multiple certs #4 depends_on:PSA_WANT_ALG_SHA_256:PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY pkcs7_parse:"../framework/data_files/pkcs7_data_multiple_certs_signed.der":MBEDTLS_ERR_PKCS7_FEATURE_UNAVAILABLE diff --git a/tests/suites/test_suite_pkcs7.function b/tests/suites/test_suite_pkcs7.function index 9eccabab22..4e60a99bc7 100644 --- a/tests/suites/test_suite_pkcs7.function +++ b/tests/suites/test_suite_pkcs7.function @@ -25,8 +25,33 @@ static int pkcs7_parse_buffer(unsigned char *pkcs7_buf, int buflen) mbedtls_pkcs7_init(&pkcs7); res = mbedtls_pkcs7_parse_der(&pkcs7, pkcs7_buf, buflen); mbedtls_pkcs7_free(&pkcs7); + return res; } + +# ifdef MBEDTLS_FS_IO +static int pkcs7_parse_buffers_reuse(unsigned char *first_buf, int first_len, + unsigned char *second_buf, int second_len) +{ + int res; + mbedtls_pkcs7 pkcs7; + + mbedtls_pkcs7_init(&pkcs7); + + res = mbedtls_pkcs7_parse_der(&pkcs7, first_buf, first_len); + if (res != MBEDTLS_PKCS7_SIGNED_DATA) { + goto exit; + } + + mbedtls_pkcs7_free(&pkcs7); + + res = mbedtls_pkcs7_parse_der(&pkcs7, second_buf, second_len); + +exit: + mbedtls_pkcs7_free(&pkcs7); + return res; +} +#endif /* END_SUITE_HELPERS */ /* BEGIN_CASE */ @@ -71,6 +96,40 @@ exit: } /* END_CASE */ +/* BEGIN_CASE depends_on:MBEDTLS_FS_IO */ +void pkcs7_parse_reuse(char *first_pkcs7_file, char *second_pkcs7_file, + int res_expect) +{ + unsigned char *first_pkcs7_buf = NULL; + unsigned char *second_pkcs7_buf = NULL; + size_t first_buflen; + size_t second_buflen; + int res; + + /* PKCS7 uses X509 which itself relies on PK under the hood and the latter + * can use PSA to store keys and perform operations so psa_crypto_init() + * must be called before. */ + USE_PSA_INIT(); + + res = mbedtls_pk_load_file(first_pkcs7_file, &first_pkcs7_buf, + &first_buflen); + TEST_EQUAL(res, 0); + + res = mbedtls_pk_load_file(second_pkcs7_file, &second_pkcs7_buf, + &second_buflen); + TEST_EQUAL(res, 0); + + res = pkcs7_parse_buffers_reuse(first_pkcs7_buf, first_buflen, + second_pkcs7_buf, second_buflen); + TEST_EQUAL(res, res_expect); + +exit: + mbedtls_free(first_pkcs7_buf); + mbedtls_free(second_pkcs7_buf); + USE_PSA_DONE(); +} +/* END_CASE */ + /* BEGIN_CASE depends_on:MBEDTLS_FS_IO:MBEDTLS_X509_CRT_PARSE_C:PSA_HAVE_ALG_SOME_RSA_VERIFY */ void pkcs7_verify(char *pkcs7_file, char *crt_files, From e9ec4ce3caf7e21f877d4dd6d733b858bc56df75 Mon Sep 17 00:00:00 2001 From: Ben Taylor Date: Thu, 30 Apr 2026 13:14:27 +0100 Subject: [PATCH 02/12] Add ChangeLog Signed-off-by: Ben Taylor --- ChangeLog.d/pkcs-free-stale-pointers.txt | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 ChangeLog.d/pkcs-free-stale-pointers.txt diff --git a/ChangeLog.d/pkcs-free-stale-pointers.txt b/ChangeLog.d/pkcs-free-stale-pointers.txt new file mode 100644 index 0000000000..04ba823217 --- /dev/null +++ b/ChangeLog.d/pkcs-free-stale-pointers.txt @@ -0,0 +1,2 @@ +Bugfix + * Add fix for stale pointer after mbedtls_pkcs7_free. From f60f5ba85cda59545442af29b59fdee9ed6af83d Mon Sep 17 00:00:00 2001 From: Ben Taylor Date: Tue, 2 Jun 2026 15:32:54 +0100 Subject: [PATCH 03/12] Remove redundant function from pkcs7_parse_reuse Signed-off-by: Ben Taylor --- tests/suites/test_suite_pkcs7.function | 49 +++++++++----------------- 1 file changed, 16 insertions(+), 33 deletions(-) diff --git a/tests/suites/test_suite_pkcs7.function b/tests/suites/test_suite_pkcs7.function index 4e60a99bc7..cdf221524e 100644 --- a/tests/suites/test_suite_pkcs7.function +++ b/tests/suites/test_suite_pkcs7.function @@ -29,29 +29,6 @@ static int pkcs7_parse_buffer(unsigned char *pkcs7_buf, int buflen) return res; } -# ifdef MBEDTLS_FS_IO -static int pkcs7_parse_buffers_reuse(unsigned char *first_buf, int first_len, - unsigned char *second_buf, int second_len) -{ - int res; - mbedtls_pkcs7 pkcs7; - - mbedtls_pkcs7_init(&pkcs7); - - res = mbedtls_pkcs7_parse_der(&pkcs7, first_buf, first_len); - if (res != MBEDTLS_PKCS7_SIGNED_DATA) { - goto exit; - } - - mbedtls_pkcs7_free(&pkcs7); - - res = mbedtls_pkcs7_parse_der(&pkcs7, second_buf, second_len); - -exit: - mbedtls_pkcs7_free(&pkcs7); - return res; -} -#endif /* END_SUITE_HELPERS */ /* BEGIN_CASE */ @@ -102,30 +79,36 @@ void pkcs7_parse_reuse(char *first_pkcs7_file, char *second_pkcs7_file, { unsigned char *first_pkcs7_buf = NULL; unsigned char *second_pkcs7_buf = NULL; + mbedtls_pkcs7 pkcs7; size_t first_buflen; size_t second_buflen; - int res; /* PKCS7 uses X509 which itself relies on PK under the hood and the latter * can use PSA to store keys and perform operations so psa_crypto_init() * must be called before. */ USE_PSA_INIT(); - res = mbedtls_pk_load_file(first_pkcs7_file, &first_pkcs7_buf, - &first_buflen); - TEST_EQUAL(res, 0); + mbedtls_pkcs7_init(&pkcs7); - res = mbedtls_pk_load_file(second_pkcs7_file, &second_pkcs7_buf, - &second_buflen); - TEST_EQUAL(res, 0); + TEST_EQUAL(mbedtls_pk_load_file(first_pkcs7_file, &first_pkcs7_buf, + &first_buflen), 0); - res = pkcs7_parse_buffers_reuse(first_pkcs7_buf, first_buflen, - second_pkcs7_buf, second_buflen); - TEST_EQUAL(res, res_expect); + TEST_EQUAL(mbedtls_pk_load_file(second_pkcs7_file, &second_pkcs7_buf, + &second_buflen), 0); + + TEST_EQUAL(mbedtls_pkcs7_parse_der(&pkcs7, first_pkcs7_buf, + first_buflen), + MBEDTLS_PKCS7_SIGNED_DATA); + + mbedtls_pkcs7_free(&pkcs7); + TEST_EQUAL(mbedtls_pkcs7_parse_der(&pkcs7, second_pkcs7_buf, + second_buflen), + res_expect); exit: mbedtls_free(first_pkcs7_buf); mbedtls_free(second_pkcs7_buf); + mbedtls_pkcs7_free(&pkcs7); USE_PSA_DONE(); } /* END_CASE */ From 62162e6e4d08ddcc6805975cc39e59f69e0c9775 Mon Sep 17 00:00:00 2001 From: Ben Taylor Date: Tue, 2 Jun 2026 15:34:40 +0100 Subject: [PATCH 04/12] Fix style issues Signed-off-by: Ben Taylor --- tests/suites/test_suite_pkcs7.function | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/suites/test_suite_pkcs7.function b/tests/suites/test_suite_pkcs7.function index cdf221524e..3fccbaceaf 100644 --- a/tests/suites/test_suite_pkcs7.function +++ b/tests/suites/test_suite_pkcs7.function @@ -91,18 +91,18 @@ void pkcs7_parse_reuse(char *first_pkcs7_file, char *second_pkcs7_file, mbedtls_pkcs7_init(&pkcs7); TEST_EQUAL(mbedtls_pk_load_file(first_pkcs7_file, &first_pkcs7_buf, - &first_buflen), 0); + &first_buflen), 0); TEST_EQUAL(mbedtls_pk_load_file(second_pkcs7_file, &second_pkcs7_buf, - &second_buflen), 0); + &second_buflen), 0); TEST_EQUAL(mbedtls_pkcs7_parse_der(&pkcs7, first_pkcs7_buf, - first_buflen), + first_buflen), MBEDTLS_PKCS7_SIGNED_DATA); mbedtls_pkcs7_free(&pkcs7); TEST_EQUAL(mbedtls_pkcs7_parse_der(&pkcs7, second_pkcs7_buf, - second_buflen), + second_buflen), res_expect); exit: From 4e797c14e0ae62c31f7ae5996dd27888642d11a3 Mon Sep 17 00:00:00 2001 From: Ben Taylor Date: Tue, 2 Jun 2026 15:35:08 +0100 Subject: [PATCH 05/12] Update ChangeLog Signed-off-by: Ben Taylor --- ChangeLog.d/pkcs-free-stale-pointers.txt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/ChangeLog.d/pkcs-free-stale-pointers.txt b/ChangeLog.d/pkcs-free-stale-pointers.txt index 04ba823217..e283557b15 100644 --- a/ChangeLog.d/pkcs-free-stale-pointers.txt +++ b/ChangeLog.d/pkcs-free-stale-pointers.txt @@ -1,2 +1,4 @@ -Bugfix - * Add fix for stale pointer after mbedtls_pkcs7_free. +Security + * Fix a use-after-free/double-free risk in mbedtls_pkcs7_free() when reusing an mbedtls_pkcs7 context + across parse -> free -> parse -> free cycles. The function now clears the signer list after freeing it, + ensuring stale signed_data.signers.next pointers cannot be walked by a later free operation. From 64435904480332b9dd7249b73385853720b6a5da Mon Sep 17 00:00:00 2001 From: Ben Taylor Date: Tue, 2 Jun 2026 15:38:02 +0100 Subject: [PATCH 06/12] Update ChangeLog Signed-off-by: Ben Taylor --- ChangeLog.d/pkcs-free-stale-pointers.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ChangeLog.d/pkcs-free-stale-pointers.txt b/ChangeLog.d/pkcs-free-stale-pointers.txt index e283557b15..72c673fac6 100644 --- a/ChangeLog.d/pkcs-free-stale-pointers.txt +++ b/ChangeLog.d/pkcs-free-stale-pointers.txt @@ -1,4 +1,4 @@ Security * Fix a use-after-free/double-free risk in mbedtls_pkcs7_free() when reusing an mbedtls_pkcs7 context - across parse -> free -> parse -> free cycles. The function now clears the signer list after freeing it, + across parse -> free -> parse -> free cycles. The function now resets the context after freeing it, ensuring stale signed_data.signers.next pointers cannot be walked by a later free operation. From 84966c1bda07dd01e38786b2caa9b7453a5adb95 Mon Sep 17 00:00:00 2001 From: Ben Taylor Date: Tue, 2 Jun 2026 15:47:08 +0100 Subject: [PATCH 07/12] Add further testing Signed-off-by: Ben Taylor --- tests/suites/test_suite_pkcs7.data | 8 ++++++ tests/suites/test_suite_pkcs7.function | 35 ++++++++++++++++++++++++-- 2 files changed, 41 insertions(+), 2 deletions(-) diff --git a/tests/suites/test_suite_pkcs7.data b/tests/suites/test_suite_pkcs7.data index 7e220fc2e6..88dc5f27ef 100644 --- a/tests/suites/test_suite_pkcs7.data +++ b/tests/suites/test_suite_pkcs7.data @@ -18,6 +18,14 @@ PKCS7 Signed Data Parse reused object after multiple signers depends_on:PSA_WANT_ALG_SHA_256:PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY pkcs7_parse_reuse:"../framework/data_files/pkcs7_data_multiple_signed.der":"../framework/data_files/pkcs7_data_no_signers.der":MBEDTLS_PKCS7_SIGNED_DATA +PKCS7 Signed Data Parse reused object from multiple signers to one signer +depends_on:PSA_WANT_ALG_SHA_256:PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY +pkcs7_parse_reuse:"../framework/data_files/pkcs7_data_multiple_signed.der":"../framework/data_files/pkcs7_data_cert_signed_sha256.der":MBEDTLS_PKCS7_SIGNED_DATA + +PKCS7 Signed Data Parse free resets context after multiple signers +depends_on:PSA_WANT_ALG_SHA_256:PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY +pkcs7_parse_free_resets_context:"../framework/data_files/pkcs7_data_multiple_signed.der":MBEDTLS_PKCS7_SIGNED_DATA + PKCS7 Signed Data Parse Fail with multiple certs #4 depends_on:PSA_WANT_ALG_SHA_256:PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY pkcs7_parse:"../framework/data_files/pkcs7_data_multiple_certs_signed.der":MBEDTLS_ERR_PKCS7_FEATURE_UNAVAILABLE diff --git a/tests/suites/test_suite_pkcs7.function b/tests/suites/test_suite_pkcs7.function index 3fccbaceaf..f6068879f8 100644 --- a/tests/suites/test_suite_pkcs7.function +++ b/tests/suites/test_suite_pkcs7.function @@ -83,13 +83,13 @@ void pkcs7_parse_reuse(char *first_pkcs7_file, char *second_pkcs7_file, size_t first_buflen; size_t second_buflen; + mbedtls_pkcs7_init(&pkcs7); + /* PKCS7 uses X509 which itself relies on PK under the hood and the latter * can use PSA to store keys and perform operations so psa_crypto_init() * must be called before. */ USE_PSA_INIT(); - mbedtls_pkcs7_init(&pkcs7); - TEST_EQUAL(mbedtls_pk_load_file(first_pkcs7_file, &first_pkcs7_buf, &first_buflen), 0); @@ -113,6 +113,37 @@ exit: } /* END_CASE */ +/* BEGIN_CASE depends_on:MBEDTLS_FS_IO */ +void pkcs7_parse_free_resets_context(char *pkcs7_file, int res_expect) +{ + unsigned char *pkcs7_buf = NULL; + mbedtls_pkcs7 pkcs7; + size_t buflen; + + mbedtls_pkcs7_init(&pkcs7); + + /* PKCS7 uses X509 which itself relies on PK under the hood and the latter + * can use PSA to store keys and perform operations so psa_crypto_init() + * must be called before. */ + USE_PSA_INIT(); + + TEST_EQUAL(mbedtls_pk_load_file(pkcs7_file, &pkcs7_buf, &buflen), 0); + + TEST_EQUAL(mbedtls_pkcs7_parse_der(&pkcs7, pkcs7_buf, buflen), + res_expect); + + mbedtls_pkcs7_free(&pkcs7); + + TEST_ASSERT(pkcs7.raw.p == NULL); + TEST_ASSERT(pkcs7.signed_data.signers.next == NULL); + +exit: + mbedtls_pkcs7_free(&pkcs7); + mbedtls_free(pkcs7_buf); + USE_PSA_DONE(); +} +/* END_CASE */ + /* BEGIN_CASE depends_on:MBEDTLS_FS_IO:MBEDTLS_X509_CRT_PARSE_C:PSA_HAVE_ALG_SOME_RSA_VERIFY */ void pkcs7_verify(char *pkcs7_file, char *crt_files, From 351419f1ff82f148e142bd9bdbfc2a3fa3b7f5ee Mon Sep 17 00:00:00 2001 From: Ben Taylor Date: Wed, 3 Jun 2026 08:03:06 +0100 Subject: [PATCH 08/12] Correct changelog style Signed-off-by: Ben Taylor --- ChangeLog.d/pkcs-free-stale-pointers.txt | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/ChangeLog.d/pkcs-free-stale-pointers.txt b/ChangeLog.d/pkcs-free-stale-pointers.txt index 72c673fac6..68811c056c 100644 --- a/ChangeLog.d/pkcs-free-stale-pointers.txt +++ b/ChangeLog.d/pkcs-free-stale-pointers.txt @@ -1,4 +1,6 @@ Security - * Fix a use-after-free/double-free risk in mbedtls_pkcs7_free() when reusing an mbedtls_pkcs7 context - across parse -> free -> parse -> free cycles. The function now resets the context after freeing it, - ensuring stale signed_data.signers.next pointers cannot be walked by a later free operation. + * Fix a use-after-free/double-free risk in mbedtls_pkcs7_free() when reusing + an mbedtls_pkcs7 context across parse -> free -> parse -> free cycles. The + function now resets the context after freeing it, ensuring stale + signed_data.signers.next pointers cannot be walked by a later free + operation. From 74555884cc72bf8aa6b74a0a09bb2a3a68741806 Mon Sep 17 00:00:00 2001 From: Ben Taylor Date: Wed, 3 Jun 2026 10:24:27 +0100 Subject: [PATCH 09/12] Remove whitespace in ChangeLog Signed-off-by: Ben Taylor --- ChangeLog.d/pkcs-free-stale-pointers.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ChangeLog.d/pkcs-free-stale-pointers.txt b/ChangeLog.d/pkcs-free-stale-pointers.txt index 68811c056c..b56a62cc57 100644 --- a/ChangeLog.d/pkcs-free-stale-pointers.txt +++ b/ChangeLog.d/pkcs-free-stale-pointers.txt @@ -1,6 +1,6 @@ Security * Fix a use-after-free/double-free risk in mbedtls_pkcs7_free() when reusing an mbedtls_pkcs7 context across parse -> free -> parse -> free cycles. The - function now resets the context after freeing it, ensuring stale + function now resets the context after freeing it, ensuring stale signed_data.signers.next pointers cannot be walked by a later free operation. From a798b5804ef8571bcfd6609019758014325162c4 Mon Sep 17 00:00:00 2001 From: Ben Taylor <32939606+bjwtaylor@users.noreply.github.com> Date: Mon, 8 Jun 2026 15:49:42 +0100 Subject: [PATCH 10/12] Add CVE ID to ChangeLog Co-authored-by: Gilles Peskine Signed-off-by: Ben Taylor <32939606+bjwtaylor@users.noreply.github.com> --- ChangeLog.d/pkcs-free-stale-pointers.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ChangeLog.d/pkcs-free-stale-pointers.txt b/ChangeLog.d/pkcs-free-stale-pointers.txt index b56a62cc57..2c29fed5ef 100644 --- a/ChangeLog.d/pkcs-free-stale-pointers.txt +++ b/ChangeLog.d/pkcs-free-stale-pointers.txt @@ -3,4 +3,4 @@ Security an mbedtls_pkcs7 context across parse -> free -> parse -> free cycles. The function now resets the context after freeing it, ensuring stale signed_data.signers.next pointers cannot be walked by a later free - operation. + operation. CVE-2026-50579 From 10afc1ed5c8e9c47caf1ad8ee6241fd99e43f945 Mon Sep 17 00:00:00 2001 From: Ben Taylor Date: Wed, 10 Jun 2026 10:17:48 +0100 Subject: [PATCH 11/12] Remove pkcs7_parse_free_resets_context as it duplicates pkcs7_parse_reuse Signed-off-by: Ben Taylor --- tests/suites/test_suite_pkcs7.data | 4 ---- tests/suites/test_suite_pkcs7.function | 31 -------------------------- 2 files changed, 35 deletions(-) diff --git a/tests/suites/test_suite_pkcs7.data b/tests/suites/test_suite_pkcs7.data index 88dc5f27ef..57f71841e2 100644 --- a/tests/suites/test_suite_pkcs7.data +++ b/tests/suites/test_suite_pkcs7.data @@ -22,10 +22,6 @@ PKCS7 Signed Data Parse reused object from multiple signers to one signer depends_on:PSA_WANT_ALG_SHA_256:PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY pkcs7_parse_reuse:"../framework/data_files/pkcs7_data_multiple_signed.der":"../framework/data_files/pkcs7_data_cert_signed_sha256.der":MBEDTLS_PKCS7_SIGNED_DATA -PKCS7 Signed Data Parse free resets context after multiple signers -depends_on:PSA_WANT_ALG_SHA_256:PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY -pkcs7_parse_free_resets_context:"../framework/data_files/pkcs7_data_multiple_signed.der":MBEDTLS_PKCS7_SIGNED_DATA - PKCS7 Signed Data Parse Fail with multiple certs #4 depends_on:PSA_WANT_ALG_SHA_256:PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY pkcs7_parse:"../framework/data_files/pkcs7_data_multiple_certs_signed.der":MBEDTLS_ERR_PKCS7_FEATURE_UNAVAILABLE diff --git a/tests/suites/test_suite_pkcs7.function b/tests/suites/test_suite_pkcs7.function index f6068879f8..09968f5ddf 100644 --- a/tests/suites/test_suite_pkcs7.function +++ b/tests/suites/test_suite_pkcs7.function @@ -113,37 +113,6 @@ exit: } /* END_CASE */ -/* BEGIN_CASE depends_on:MBEDTLS_FS_IO */ -void pkcs7_parse_free_resets_context(char *pkcs7_file, int res_expect) -{ - unsigned char *pkcs7_buf = NULL; - mbedtls_pkcs7 pkcs7; - size_t buflen; - - mbedtls_pkcs7_init(&pkcs7); - - /* PKCS7 uses X509 which itself relies on PK under the hood and the latter - * can use PSA to store keys and perform operations so psa_crypto_init() - * must be called before. */ - USE_PSA_INIT(); - - TEST_EQUAL(mbedtls_pk_load_file(pkcs7_file, &pkcs7_buf, &buflen), 0); - - TEST_EQUAL(mbedtls_pkcs7_parse_der(&pkcs7, pkcs7_buf, buflen), - res_expect); - - mbedtls_pkcs7_free(&pkcs7); - - TEST_ASSERT(pkcs7.raw.p == NULL); - TEST_ASSERT(pkcs7.signed_data.signers.next == NULL); - -exit: - mbedtls_pkcs7_free(&pkcs7); - mbedtls_free(pkcs7_buf); - USE_PSA_DONE(); -} -/* END_CASE */ - /* BEGIN_CASE depends_on:MBEDTLS_FS_IO:MBEDTLS_X509_CRT_PARSE_C:PSA_HAVE_ALG_SOME_RSA_VERIFY */ void pkcs7_verify(char *pkcs7_file, char *crt_files, From 377aa4eff16cd0aa5e7440a41de59847e3a789a0 Mon Sep 17 00:00:00 2001 From: Ben Taylor <32939606+bjwtaylor@users.noreply.github.com> Date: Mon, 15 Jun 2026 11:52:52 +0100 Subject: [PATCH 12/12] Add in the two additional checks that were dropped. Co-authored-by: Ronald Cron Signed-off-by: Ben Taylor <32939606+bjwtaylor@users.noreply.github.com> --- tests/suites/test_suite_pkcs7.function | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/suites/test_suite_pkcs7.function b/tests/suites/test_suite_pkcs7.function index 09968f5ddf..3bd7595b96 100644 --- a/tests/suites/test_suite_pkcs7.function +++ b/tests/suites/test_suite_pkcs7.function @@ -101,6 +101,8 @@ void pkcs7_parse_reuse(char *first_pkcs7_file, char *second_pkcs7_file, MBEDTLS_PKCS7_SIGNED_DATA); mbedtls_pkcs7_free(&pkcs7); + TEST_ASSERT(pkcs7.raw.p == NULL); + TEST_ASSERT(pkcs7.signed_data.signers.next == NULL); TEST_EQUAL(mbedtls_pkcs7_parse_der(&pkcs7, second_pkcs7_buf, second_buflen), res_expect);