From 621890c34b52c04c6263cb85392aaa664ce64469 Mon Sep 17 00:00:00 2001 From: Julio Loayza Meneses Date: Tue, 25 Aug 2026 16:09:34 +0200 Subject: [PATCH 1/2] Fix PSA initialisation in client fuzzers On the first call to the client fuzzers, an initialisation clause parses a CA certificate. This initialisation happens _before_ the call to psa_crypto_init(), which causes the certificate parser to fail, breaking the fuzzer. Signed-off-by: Julio Loayza Meneses --- programs/fuzz/fuzz_client.c | 10 +++++----- programs/fuzz/fuzz_dtlsclient.c | 10 +++++----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/programs/fuzz/fuzz_client.c b/programs/fuzz/fuzz_client.c index 8c99f2dddd..c55b3bfaf4 100644 --- a/programs/fuzz/fuzz_client.c +++ b/programs/fuzz/fuzz_client.c @@ -37,6 +37,11 @@ int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) fuzzBufferOffset_t biomemfuzz; uint16_t options; + psa_status_t status = psa_crypto_init(); + if (status != PSA_SUCCESS) { + goto exit; + } + if (initialized == 0) { #if defined(MBEDTLS_X509_CRT_PARSE_C) && defined(MBEDTLS_PEM_PARSE_C) mbedtls_x509_crt_init(&cacert); @@ -66,11 +71,6 @@ int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) mbedtls_ssl_init(&ssl); mbedtls_ssl_config_init(&conf); - psa_status_t status = psa_crypto_init(); - if (status != PSA_SUCCESS) { - goto exit; - } - if (mbedtls_ssl_config_defaults(&conf, MBEDTLS_SSL_IS_CLIENT, MBEDTLS_SSL_TRANSPORT_STREAM, diff --git a/programs/fuzz/fuzz_dtlsclient.c b/programs/fuzz/fuzz_dtlsclient.c index 508b796e8b..01fac617b9 100644 --- a/programs/fuzz/fuzz_dtlsclient.c +++ b/programs/fuzz/fuzz_dtlsclient.c @@ -33,6 +33,11 @@ int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) unsigned char buf[4096]; fuzzBufferOffset_t biomemfuzz; + psa_status_t status = psa_crypto_init(); + if (status != PSA_SUCCESS) { + goto exit; + } + if (initialized == 0) { #if defined(MBEDTLS_X509_CRT_PARSE_C) && defined(MBEDTLS_PEM_PARSE_C) mbedtls_x509_crt_init(&cacert); @@ -49,11 +54,6 @@ int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) mbedtls_ssl_init(&ssl); mbedtls_ssl_config_init(&conf); - psa_status_t status = psa_crypto_init(); - if (status != PSA_SUCCESS) { - goto exit; - } - if (mbedtls_ssl_config_defaults(&conf, MBEDTLS_SSL_IS_CLIENT, MBEDTLS_SSL_TRANSPORT_DATAGRAM, From 64b0a840fef0de0802a4c34be96aab19afd5a984 Mon Sep 17 00:00:00 2001 From: Julio Loayza Meneses Date: Thu, 27 Aug 2026 18:13:13 +0200 Subject: [PATCH 2/2] Add changelog entry for fix of client fuzzers Signed-off-by: Julio Loayza Meneses --- ChangeLog.d/fix-client-fuzzing.txt | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 ChangeLog.d/fix-client-fuzzing.txt diff --git a/ChangeLog.d/fix-client-fuzzing.txt b/ChangeLog.d/fix-client-fuzzing.txt new file mode 100644 index 0000000000..8265c58105 --- /dev/null +++ b/ChangeLog.d/fix-client-fuzzing.txt @@ -0,0 +1,3 @@ +Bugfix + * Call to `psa_crypto_init()` before parsing the test CA certificate in the + fuzzing programs for TLS and DTLS clients.