From 54816e8b18eb4f0d91fd90bacf1e4ccbb46d9f31 Mon Sep 17 00:00:00 2001 From: JacobBarthelmeh Date: Thu, 5 Mar 2026 09:30:16 -0700 Subject: [PATCH] Fix to free RNG with SRP function in failure case --- wolfcrypt/src/srp.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/wolfcrypt/src/srp.c b/wolfcrypt/src/srp.c index 5f51d4f5ee..245356f5e3 100644 --- a/wolfcrypt/src/srp.c +++ b/wolfcrypt/src/srp.c @@ -543,12 +543,16 @@ int wc_SrpSetPrivate(Srp* srp, const byte* priv, word32 size) static int wc_SrpGenPrivate(Srp* srp, byte* priv, word32 size) { WC_RNG rng; - int r = wc_InitRng_ex(&rng, srp->heap, INVALID_DEVID); - - if (!r) r = wc_RNG_GenerateBlock(&rng, priv, size); - if (!r) r = wc_SrpSetPrivate(srp, priv, size); - if (!r) wc_FreeRng(&rng); + int r; + r = wc_InitRng_ex(&rng, srp->heap, INVALID_DEVID); + if (r == 0) { + r = wc_RNG_GenerateBlock(&rng, priv, size); + if (r == 0) { + r = wc_SrpSetPrivate(srp, priv, size); + } + wc_FreeRng(&rng); + } return r; }