Skip to content

Commit 886ebb6

Browse files
committed
fixes for enable-all-crypto enable-cryptonly WOLFSSL_NO_MALLOC:
wolfcrypt/src//asn.c: add stack buffer codepaths in ParseKeyUsageStr(), SetKeyIdFromPublicKey(), and EncodePolicyOID; wolfcrypt/src/dh.c: add stack buffer codepath in wc_DhGenerateParams(); wolfcrypt/src/ecc.c: add always-fail codepath to find_hole() to preempt heap allocation attempts; wolfcrypt/test/test.c: gate out several heap-dependent subtests when defined(WOLFSSL_NO_MALLOC), and add a stack buffer codepath in ed448_test(); wolfssl/wolfcrypt/types.h: harmonize macro definitions of XFREE() to use do { ... } while (0) wrappers to assure syntactic indivisibility.
1 parent 0f8b4db commit 886ebb6

5 files changed

Lines changed: 88 additions & 29 deletions

File tree

wolfcrypt/src/asn.c

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28314,7 +28314,12 @@ int wc_EncodeNameCanonical(EncodedName* name, const char* nameStr,
2831428314
int ParseKeyUsageStr(const char* value, word16* keyUsage, void* heap)
2831528315
{
2831628316
int ret = 0;
28317-
char *token, *str, *ptr;
28317+
#ifdef WOLFSSL_NO_MALLOC
28318+
char str[1024];
28319+
#else
28320+
char *str;
28321+
#endif
28322+
char *token, *ptr;
2831828323
word32 len = 0;
2831928324
word16 usage = 0;
2832028325

@@ -28324,10 +28329,15 @@ int ParseKeyUsageStr(const char* value, word16* keyUsage, void* heap)
2832428329

2832528330
/* duplicate string (including terminator) */
2832628331
len = (word32)XSTRLEN(value);
28332+
#ifdef WOLFSSL_NO_MALLOC
28333+
if (len >= sizeof(str))
28334+
return MEMORY_E;
28335+
#else
2832728336
str = (char*)XMALLOC(len + 1, heap, DYNAMIC_TYPE_TMP_BUFFER);
2832828337
if (str == NULL) {
2832928338
return MEMORY_E;
2833028339
}
28340+
#endif
2833128341
XMEMCPY(str, value, len + 1);
2833228342

2833328343
/* parse value, and set corresponding Key Usage value */
@@ -32302,7 +32312,11 @@ static int SetKeyIdFromPublicKey(Cert *cert, RsaKey *rsakey, ecc_key *eckey,
3230232312
dilithium_key* dilithiumKey,
3230332313
sphincs_key *sphincsKey, int kid_type)
3230432314
{
32315+
#ifdef WOLFSSL_NO_MALLOC
32316+
byte buf[MAX_PUBLIC_KEY_SZ];
32317+
#else
3230532318
byte *buf;
32319+
#endif
3230632320
int bufferSz, ret;
3230732321

3230832322
if (cert == NULL ||
@@ -32312,10 +32326,12 @@ static int SetKeyIdFromPublicKey(Cert *cert, RsaKey *rsakey, ecc_key *eckey,
3231232326
(kid_type != SKID_TYPE && kid_type != AKID_TYPE))
3231332327
return BAD_FUNC_ARG;
3231432328

32329+
#ifndef WOLFSSL_NO_MALLOC
3231532330
buf = (byte *)XMALLOC(MAX_PUBLIC_KEY_SZ, cert->heap,
3231632331
DYNAMIC_TYPE_TMP_BUFFER);
3231732332
if (buf == NULL)
3231832333
return MEMORY_E;
32334+
#endif
3231932335

3232032336
/* Public Key */
3232132337
bufferSz = -1;
@@ -33322,7 +33338,12 @@ int wc_SetDatesBuffer(Cert* cert, const byte* der, int derSz)
3332233338
int EncodePolicyOID(byte *out, word32 *outSz, const char *in, void* heap)
3332333339
{
3332433340
word32 idx = 0, nb_val;
33325-
char *token, *str, *ptr;
33341+
#ifdef WOLFSSL_NO_MALLOC
33342+
char str[1024];
33343+
#else
33344+
char *str;
33345+
#endif
33346+
char *token, *ptr;
3332633347
word32 len;
3332733348

3332833349
(void)heap;
@@ -33332,9 +33353,14 @@ int EncodePolicyOID(byte *out, word32 *outSz, const char *in, void* heap)
3333233353

3333333354
/* duplicate string (including terminator) */
3333433355
len = (word32)XSTRLEN(in);
33356+
#ifdef WOLFSSL_NO_MALLOC
33357+
if (len >= sizeof(str))
33358+
return MEMORY_E;
33359+
#else
3333533360
str = (char *)XMALLOC(len+1, heap, DYNAMIC_TYPE_TMP_BUFFER);
3333633361
if (str == NULL)
3333733362
return MEMORY_E;
33363+
#endif
3333833364
XMEMCPY(str, in, len+1);
3333933365

3334033366
nb_val = 0;

wolfcrypt/src/dh.c

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2979,7 +2979,11 @@ int wc_DhGenerateParams(WC_RNG *rng, int modSz, DhKey *dh)
29792979
primeCheckCount = 0;
29802980
int primeCheck = MP_NO,
29812981
ret = 0;
2982+
#ifdef WOLFSSL_NO_MALLOC
2983+
unsigned char buf[4096 / WOLFSSL_BIT_SIZE];
2984+
#else
29822985
unsigned char *buf = NULL;
2986+
#endif
29832987

29842988
#if !defined(WOLFSSL_SMALL_STACK) || defined(WOLFSSL_NO_MALLOC)
29852989
XMEMSET(tmp, 0, sizeof(tmp));
@@ -3029,11 +3033,16 @@ int wc_DhGenerateParams(WC_RNG *rng, int modSz, DhKey *dh)
30293033
if (ret == 0) {
30303034
bufSz = (word32)modSz - groupSz;
30313035

3036+
#ifdef WOLFSSL_NO_MALLOC
3037+
if (bufSz > sizeof(buf))
3038+
ret = MEMORY_E;
3039+
#else
30323040
/* allocate ram */
30333041
buf = (unsigned char *)XMALLOC(bufSz,
30343042
dh->heap, DYNAMIC_TYPE_TMP_BUFFER);
30353043
if (buf == NULL)
30363044
ret = MEMORY_E;
3045+
#endif
30373046
}
30383047

30393048
/* make a random string that will be multiplied against q */
@@ -3167,7 +3176,10 @@ int wc_DhGenerateParams(WC_RNG *rng, int modSz, DhKey *dh)
31673176

31683177
RESTORE_VECTOR_REGISTERS();
31693178

3170-
if (buf != NULL) {
3179+
#ifndef WOLFSSL_NO_MALLOC
3180+
if (buf != NULL)
3181+
#endif
3182+
{
31713183
ForceZero(buf, bufSz);
31723184
if (dh != NULL) {
31733185
XFREE(buf, dh->heap, DYNAMIC_TYPE_TMP_BUFFER);

wolfcrypt/src/ecc.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12441,6 +12441,9 @@ static const struct {
1244112441
/* find a hole and free as required, return -1 if no hole found */
1244212442
static int find_hole(void)
1244312443
{
12444+
#ifdef WOLFSSL_NO_MALLOC
12445+
return -1;
12446+
#else
1244412447
int x, y, z;
1244512448
for (z = -1, y = INT_MAX, x = 0; x < FP_ENTRIES; x++) {
1244612449
if (fp_cache[x].lru_count < y && fp_cache[x].lock == 0) {
@@ -12469,6 +12472,7 @@ static int find_hole(void)
1246912472
fp_cache[z].lru_count = 0;
1247012473
}
1247112474
return z;
12475+
#endif /* !WOLFSSL_NO_MALLOC */
1247212476
}
1247312477

1247412478
/* determine if a base is already in the cache and if so, where */

wolfcrypt/test/test.c

Lines changed: 32 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2652,7 +2652,7 @@ static wc_test_ret_t _SaveDerAndPem(const byte* der, int derSz,
26522652
#ifndef WOLFSSL_NO_MALLOC
26532653
byte* pem;
26542654
#else
2655-
byte pem[1024];
2655+
byte pem[2048];
26562656
#endif
26572657
int pemSz;
26582658

@@ -2668,7 +2668,7 @@ static wc_test_ret_t _SaveDerAndPem(const byte* der, int derSz,
26682668
}
26692669
#else
26702670
if (pemSz > (int)sizeof(pem))
2671-
return BAD_FUNC_ARG;
2671+
return WC_TEST_RET_ENC_EC(BAD_FUNC_ARG);
26722672
#endif
26732673
/* Convert to PEM */
26742674
pemSz = wc_DerToPem(der, (word32)derSz, pem, (word32)pemSz, pemType);
@@ -18163,7 +18163,8 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t memory_test(void)
1816318163
#ifdef WOLFSSL_CERT_GEN
1816418164
static const char* rsaCaCertFile = CERT_ROOT "ca-cert.pem";
1816518165
#endif
18166-
#if defined(WOLFSSL_ALT_NAMES) || defined(HAVE_PKCS7)
18166+
#if (defined(WOLFSSL_ALT_NAMES) && !defined(WOLFSSL_NO_MALLOC)) || \
18167+
defined(HAVE_PKCS7)
1816718168
static const char* rsaCaCertDerFile = CERT_ROOT "ca-cert.der";
1816818169
#endif
1816918170
#ifdef HAVE_PKCS7
@@ -18208,7 +18209,7 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t memory_test(void)
1820818209
#ifndef NO_RSA
1820918210
static const char* eccKeyPubFileDer = CERT_ROOT "ecc-keyPub.der";
1821018211
#endif
18211-
#ifndef NO_ASN_TIME
18212+
#if !defined(NO_ASN_TIME) && !defined(WOLFSSL_NO_MALLOC)
1821218213
static const char* eccCaKeyFile = CERT_ROOT "ca-ecc-key.der";
1821318214
static const char* eccCaCertFile = CERT_ROOT "ca-ecc-cert.pem";
1821418215
#ifdef ENABLE_ECC384_CERT_GEN_TEST
@@ -18264,7 +18265,8 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t memory_test(void)
1826418265
#ifndef NO_WRITE_TEMP_FILES
1826518266
#ifdef HAVE_ECC
1826618267
#ifndef NO_ECC_SECP
18267-
#if defined(WOLFSSL_CERT_GEN) && !defined(NO_ASN_TIME)
18268+
#if defined(WOLFSSL_CERT_GEN) && !defined(NO_ASN_TIME) && \
18269+
!defined(WOLFSSL_NO_MALLOC)
1826818270
static const char* certEccPemFile = CERT_WRITE_TEMP_DIR "certecc.pem";
1826918271
static const char* certEccDerFile = CERT_WRITE_TEMP_DIR "certecc.der";
1827018272
#endif
@@ -18286,7 +18288,8 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t memory_test(void)
1828618288
#endif /* HAVE_ECC */
1828718289

1828818290
#ifndef NO_RSA
18289-
#if defined(WOLFSSL_CERT_GEN) && !defined(NO_ASN_TIME)
18291+
#if defined(WOLFSSL_CERT_GEN) && !defined(NO_ASN_TIME) && \
18292+
!defined(WOLFSSL_NO_MALLOC)
1829018293
static const char* otherCertDerFile = CERT_WRITE_TEMP_DIR "othercert.der";
1829118294
static const char* certDerFile = CERT_WRITE_TEMP_DIR "cert.der";
1829218295
static const char* otherCertPemFile = CERT_WRITE_TEMP_DIR "othercert.pem";
@@ -20482,7 +20485,7 @@ static wc_test_ret_t rsa_even_mod_test(WC_RNG* rng, RsaKey* key)
2048220485
}
2048320486
#endif /* WOLFSSL_HAVE_SP_RSA */
2048420487

20485-
#if defined(WOLFSSL_CERT_GEN) && !defined(NO_ASN_TIME)
20488+
#if defined(WOLFSSL_CERT_GEN) && !defined(NO_ASN_TIME) && !defined(WOLFSSL_NO_MALLOC)
2048620489
static wc_test_ret_t rsa_certgen_test(RsaKey* key, RsaKey* keypub, WC_RNG* rng, byte* tmp)
2048720490
{
2048820491
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_NO_MALLOC)
@@ -21969,7 +21972,8 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t rsa_test(void)
2196921972
goto exit_rsa;
2197021973
#endif
2197121974

21972-
#if defined(WOLFSSL_CERT_GEN) && !defined(NO_ASN_TIME)
21975+
#if defined(WOLFSSL_CERT_GEN) && !defined(NO_ASN_TIME) && \
21976+
!defined(WOLFSSL_NO_MALLOC)
2197321977
/* Make Cert / Sign example for RSA cert and RSA CA */
2197421978
ret = rsa_certgen_test(key, keypub, &rng, tmp);
2197521979
if (ret != 0)
@@ -32575,7 +32579,8 @@ static int test_sm2_verify(void)
3257532579
#endif /* WOLFSSL_SM2 */
3257632580

3257732581

32578-
#if defined(WOLFSSL_CERT_GEN) && !defined(NO_ECC_SECP) && !defined(NO_ASN_TIME)
32582+
#if defined(WOLFSSL_CERT_GEN) && !defined(NO_ECC_SECP) && \
32583+
!defined(NO_ASN_TIME) && !defined(WOLFSSL_NO_MALLOC)
3257932584

3258032585
/* Make Cert / Sign example for ECC cert and ECC CA */
3258132586
static wc_test_ret_t ecc_test_cert_gen(WC_RNG* rng)
@@ -33612,7 +33617,8 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t ecc_test(void)
3361233617
#elif defined(HAVE_ECC_KEY_IMPORT)
3361333618
(void)ecc_test_make_pub; /* for compiler warning */
3361433619
#endif
33615-
#if defined(WOLFSSL_CERT_GEN) && !defined(NO_ECC_SECP) && !defined(NO_ASN_TIME)
33620+
#if defined(WOLFSSL_CERT_GEN) && !defined(NO_ECC_SECP) && \
33621+
!defined(NO_ASN_TIME) && !defined(WOLFSSL_NO_MALLOC)
3361633622
ret = ecc_test_cert_gen(&rng);
3361733623
if (ret != 0) {
3361833624
printf("ecc_test_cert_gen failed!\n");
@@ -33647,6 +33653,8 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t ecc_test(void)
3364733653
#if defined(HAVE_ECC_ENCRYPT) && defined(HAVE_AES_CBC) && \
3364833654
(defined(WOLFSSL_AES_128) || defined(WOLFSSL_AES_256))
3364933655

33656+
#if !defined(WOLFSSL_NO_MALLOC)
33657+
3365033658
#if ((! defined(HAVE_FIPS)) || FIPS_VERSION_GE(5,3))
3365133659
/* maximum encrypted message:
3365233660
* msgSz (14) + pad (2) + pubKeySz(1+66*2) + ivSz(16) + digestSz(32) = 197 */
@@ -33765,6 +33773,8 @@ static wc_test_ret_t ecc_ctx_kdf_salt_test(WC_RNG* rng, ecc_key* a, ecc_key* b)
3376533773
}
3376633774
#endif /* !HAVE_FIPS || FIPS_VERSION_GE(5,3) */
3376733775

33776+
#endif /* !WOLFSSL_NO_MALLOC */
33777+
3376833778
/* ecc_encrypt_e2e_test() uses wc_ecc_ctx_set_algo(), which was added in
3376933779
* wolfFIPS 5.3.
3377033780
* ecc_encrypt_kat() is used only by ecc_encrypt_e2e_test().
@@ -34007,6 +34017,7 @@ static wc_test_ret_t ecc_encrypt_kat(WC_RNG *rng)
3400734017
}
3400834018
#endif
3400934019

34020+
#ifndef WOLFSSL_NO_MALLOC
3401034021
static wc_test_ret_t ecc_encrypt_e2e_test(WC_RNG* rng, ecc_key* userA, ecc_key* userB,
3401134022
byte encAlgo, byte kdfAlgo, byte macAlgo)
3401234023
{
@@ -34275,6 +34286,7 @@ static wc_test_ret_t ecc_encrypt_e2e_test(WC_RNG* rng, ecc_key* userA, ecc_key*
3427534286

3427634287
return ret;
3427734288
}
34289+
#endif
3427834290

3427934291
#endif /* !HAVE_FIPS || FIPS_VERSION_GE(5,3) */
3428034292

@@ -34350,7 +34362,7 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t ecc_encrypt_test(void)
3435034362

3435134363
#if !defined(HAVE_FIPS) || (defined(FIPS_VERSION_GE) && FIPS_VERSION_GE(5,3))
3435234364

34353-
#if !defined(NO_AES) && defined(HAVE_AES_CBC)
34365+
#if !defined(NO_AES) && defined(HAVE_AES_CBC) && !defined(WOLFSSL_NO_MALLOC)
3435434366
#ifdef WOLFSSL_AES_128
3435534367
if (ret == 0) {
3435634368
ret = ecc_encrypt_e2e_test(&rng, userA, userB, ecAES_128_CBC,
@@ -34386,7 +34398,7 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t ecc_encrypt_test(void)
3438634398
}
3438734399
#endif
3438834400
#endif
34389-
#if !defined(NO_AES) && defined(WOLFSSL_AES_COUNTER)
34401+
#if !defined(NO_AES) && defined(WOLFSSL_AES_COUNTER) && !defined(WOLFSSL_NO_MALLOC)
3439034402
#ifdef WOLFSSL_AES_128
3439134403
if (ret == 0) {
3439234404
ret = ecc_encrypt_e2e_test(&rng, userA, userB, ecAES_128_CTR,
@@ -34406,7 +34418,7 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t ecc_encrypt_test(void)
3440634418
}
3440734419
#endif
3440834420
#endif /* !NO_AES && WOLFSSL_AES_COUNTER */
34409-
#if !defined(NO_AES) && defined(HAVE_AES_CBC)
34421+
#if !defined(NO_AES) && defined(HAVE_AES_CBC) && !defined(WOLFSSL_NO_MALLOC)
3441034422
if (ret == 0) {
3441134423
ret = ecc_ctx_kdf_salt_test(&rng, userA, userB);
3441234424
}
@@ -37865,15 +37877,20 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t ed448_test(void)
3786537877

3786637878
/* test api for import/exporting keys */
3786737879
{
37868-
byte *exportPKey = NULL;
37869-
byte *exportSKey = NULL;
3787037880
word32 exportPSz = ED448_KEY_SIZE;
3787137881
word32 exportSSz = ED448_KEY_SIZE;
37882+
#ifdef WOLFSSL_NO_MALLOC
37883+
byte exportPKey[exportPSz];
37884+
byte exportSKey[exportSSz];
37885+
#else
37886+
byte *exportPKey = NULL;
37887+
byte *exportSKey = NULL;
3787237888

3787337889
exportPKey = (byte *)XMALLOC(exportPSz, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER);
3787437890
exportSKey = (byte *)XMALLOC(exportSSz, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER);
3787537891
if ((exportPKey == NULL) || (exportSKey == NULL))
3787637892
ERROR_OUT(WC_TEST_RET_ENC_NC, out);
37893+
#endif
3787737894

3787837895
ret = 0;
3787937896

wolfssl/wolfcrypt/types.h

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -511,7 +511,7 @@ typedef struct w64wrapper {
511511
#ifdef WOLFSSL_XFREE_NO_NULLNESS_CHECK
512512
#define XFREE(p, h, t) m2mb_os_free(xp)
513513
#else
514-
#define XFREE(p, h, t) {void* xp = (p); if (xp) m2mb_os_free(xp);}
514+
#define XFREE(p, h, t) do { void* xp = (p); if (xp) m2mb_os_free(xp); } while (0)
515515
#endif
516516
#define XREALLOC(p, n, h, t) m2mb_os_realloc((p), (n))
517517

@@ -527,21 +527,21 @@ typedef struct w64wrapper {
527527
return NULL;
528528
};
529529
#define XMALLOC(s, h, t) ((void)(h), (void)(t), malloc_check((s)))
530-
#define XFREE(p, h, t) (void)(h); (void)(t)
530+
#define XFREE(p, h, t) do { (void)(h); (void)(t); } while (0)
531531
#define XREALLOC(p, n, h, t) ((void)(h), (void)(t), NULL)
532532
#else
533533
#define XMALLOC(s, h, t) ((void)(s), (void)(h), (void)(t), NULL)
534-
#define XFREE(p, h, t) (void)(p); (void)(h); (void)(t)
534+
#define XFREE(p, h, t) do { (void)(p); (void)(h); (void)(t); } while(0)
535535
#define XREALLOC(p, n, h, t) ((void)(p), (void)(n), (void)(h), (void)(t), NULL)
536536
#endif
537537
#else
538538
/* just use plain C stdlib stuff if desired */
539539
#include <stdlib.h>
540540
#define XMALLOC(s, h, t) ((void)(h), (void)(t), malloc((size_t)(s)))
541541
#ifdef WOLFSSL_XFREE_NO_NULLNESS_CHECK
542-
#define XFREE(p, h, t) ((void)(h), (void)(t), free(p))
542+
#define XFREE(p, h, t) do { (void)(h); (void)(t); free(p); } while (0)
543543
#else
544-
#define XFREE(p, h, t) {void* xp = (p); (void)(h); if (xp) free(xp);}
544+
#define XFREE(p, h, t) do { void* xp = (p); (void)(h); if (xp) free(xp); } while (0)
545545
#endif
546546
#define XREALLOC(p, n, h, t) \
547547
((void)(h), (void)(t), realloc((p), (size_t)(n)))
@@ -565,15 +565,15 @@ typedef struct w64wrapper {
565565
#ifdef WOLFSSL_XFREE_NO_NULLNESS_CHECK
566566
#define XFREE(p, h, t) wolfSSL_Free(xp, h, t, __func__, __LINE__)
567567
#else
568-
#define XFREE(p, h, t) {void* xp = (p); if (xp) wolfSSL_Free(xp, h, t, __func__, __LINE__);}
568+
#define XFREE(p, h, t) do { void* xp = (p); if (xp) wolfSSL_Free(xp, h, t, __func__, __LINE__); } while (0)
569569
#endif
570570
#define XREALLOC(p, n, h, t) wolfSSL_Realloc((p), (n), (h), (t), __func__, __LINE__)
571571
#else
572572
#define XMALLOC(s, h, t) wolfSSL_Malloc((s), (h), (t))
573573
#ifdef WOLFSSL_XFREE_NO_NULLNESS_CHECK
574574
#define XFREE(p, h, t) wolfSSL_Free(xp, h, t)
575575
#else
576-
#define XFREE(p, h, t) {void* xp = (p); if (xp) wolfSSL_Free(xp, h, t);}
576+
#define XFREE(p, h, t) do { void* xp = (p); if (xp) wolfSSL_Free(xp, h, t); } while (0)
577577
#endif
578578
#define XREALLOC(p, n, h, t) wolfSSL_Realloc((p), (n), (h), (t))
579579
#endif /* WOLFSSL_DEBUG_MEMORY */
@@ -585,17 +585,17 @@ typedef struct w64wrapper {
585585
#ifdef WOLFSSL_DEBUG_MEMORY
586586
#define XMALLOC(s, h, t) ((void)(h), (void)(t), wolfSSL_Malloc((s), __func__, __LINE__))
587587
#ifdef WOLFSSL_XFREE_NO_NULLNESS_CHECK
588-
#define XFREE(p, h, t) ((void)(h), (void)(t), wolfSSL_Free(xp, __func__, __LINE__))
588+
#define XFREE(p, h, t) do { (void)(h); (void)(t); wolfSSL_Free(xp, __func__, __LINE__); } while (0)
589589
#else
590-
#define XFREE(p, h, t) {void* xp = (p); (void)(h); (void)(t); if (xp) wolfSSL_Free(xp, __func__, __LINE__);}
590+
#define XFREE(p, h, t) do { void* xp = (p); (void)(h); (void)(t); if (xp) wolfSSL_Free(xp, __func__, __LINE__); } while (0)
591591
#endif
592592
#define XREALLOC(p, n, h, t) ((void)(h), (void)(t), wolfSSL_Realloc((p), (n), __func__, __LINE__))
593593
#else
594594
#define XMALLOC(s, h, t) ((void)(h), (void)(t), wolfSSL_Malloc((s)))
595595
#ifdef WOLFSSL_XFREE_NO_NULLNESS_CHECK
596-
#define XFREE(p, h, t) ((void)(h), (void)(t), wolfSSL_Free(p))
596+
#define XFREE(p, h, t) do { (void)(h); (void)(t); wolfSSL_Free(p); } while (0)
597597
#else
598-
#define XFREE(p, h, t) {void* xp = (p); (void)(h); (void)(t); if (xp) wolfSSL_Free(xp);}
598+
#define XFREE(p, h, t) do { void* xp = (p); (void)(h); (void)(t); if (xp) wolfSSL_Free(xp); } while (0)
599599
#endif
600600
#define XREALLOC(p, n, h, t) ((void)(h), (void)(t), wolfSSL_Realloc((p), (n)))
601601
#endif /* WOLFSSL_DEBUG_MEMORY */

0 commit comments

Comments
 (0)