From c0726bbb2d9fadd08822e0f125cc4468ae8eea3d Mon Sep 17 00:00:00 2001 From: Aidan Garske Date: Tue, 7 Apr 2026 13:34:46 -0700 Subject: [PATCH] Use small stack so we dont exeed stack limit on linux cases --- wolfcrypt/test/test.c | 62 ++++++++++++++++++++++++++++--------------- 1 file changed, 40 insertions(+), 22 deletions(-) diff --git a/wolfcrypt/test/test.c b/wolfcrypt/test/test.c index f0f74aeeea..3ee2b11cbe 100644 --- a/wolfcrypt/test/test.c +++ b/wolfcrypt/test/test.c @@ -27678,32 +27678,50 @@ static wc_test_ret_t srp_test_digest(SrpType dgstType) /* Negative test: corrupted proof must be rejected with SRP_VERIFY_E. */ if (!r) { int rNeg; - Srp cli2[1]; + #if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_NO_MALLOC) + Srp* cli2 = (Srp*)XMALLOC(sizeof *cli2, HEAP_HINT, + DYNAMIC_TYPE_TMP_BUFFER); + if (cli2 == NULL) { + r = WC_TEST_RET_ENC_NC; + } + #else + Srp cli2_buf[1]; + Srp* cli2 = cli2_buf; + #endif + if (!r) { + XMEMSET(cli2, 0, sizeof *cli2); + rNeg = wc_SrpInit_ex(cli2, dgstType, SRP_CLIENT_SIDE, HEAP_HINT, + devId); + if (!rNeg) rNeg = wc_SrpSetUsername(cli2, username, usernameSz); + if (!rNeg) rNeg = wc_SrpSetParams(cli2, N, sizeof(N), + g, sizeof(g), salt, + sizeof(salt)); + if (!rNeg) rNeg = wc_SrpSetPassword(cli2, password, passwordSz); + if (!rNeg) rNeg = wc_SrpGetPublic(cli2, clientPubKey, + &clientPubKeySz); + if (!rNeg) rNeg = wc_SrpComputeKey(cli2, clientPubKey, + clientPubKeySz, serverPubKey, + serverPubKeySz); + if (!rNeg) rNeg = wc_SrpGetProof(cli2, clientProof, + &clientProofSz); - XMEMSET(cli2, 0, sizeof(Srp)); - rNeg = wc_SrpInit_ex(cli2, dgstType, SRP_CLIENT_SIDE, HEAP_HINT, - devId); - if (!rNeg) rNeg = wc_SrpSetUsername(cli2, username, usernameSz); - if (!rNeg) rNeg = wc_SrpSetParams(cli2, N, sizeof(N), - g, sizeof(g), salt, sizeof(salt)); - if (!rNeg) rNeg = wc_SrpSetPassword(cli2, password, passwordSz); - if (!rNeg) rNeg = wc_SrpGetPublic(cli2, clientPubKey, &clientPubKeySz); - if (!rNeg) rNeg = wc_SrpComputeKey(cli2, clientPubKey, clientPubKeySz, - serverPubKey, serverPubKeySz); - if (!rNeg) rNeg = wc_SrpGetProof(cli2, clientProof, &clientProofSz); - - /* Corrupt the server proof before verifying. */ - serverProof[0] ^= 0x01; - if (!rNeg) { - rNeg = wc_SrpVerifyPeersProof(cli2, serverProof, serverProofSz); - if (rNeg != SRP_VERIFY_E) { + /* Corrupt the server proof before verifying. */ + serverProof[0] ^= 0x01; + if (!rNeg) { + rNeg = wc_SrpVerifyPeersProof(cli2, serverProof, + serverProofSz); + if (rNeg != SRP_VERIFY_E) { + r = WC_TEST_RET_ENC_EC(rNeg); + } + } + else { r = WC_TEST_RET_ENC_EC(rNeg); } + wc_SrpTerm(cli2); } - else { - r = WC_TEST_RET_ENC_EC(rNeg); - } - wc_SrpTerm(cli2); + #if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_NO_MALLOC) + XFREE(cli2, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER); + #endif } wc_SrpTerm(cli);