From 738373038b55b2daf7f8b6adab15b46dbc544c00 Mon Sep 17 00:00:00 2001 From: Jacob Barthelmeh Date: Mon, 6 Jun 2016 17:50:54 -0600 Subject: [PATCH] clean up staticmemory with crl --- src/crl.c | 22 ++++++++++++---------- wolfcrypt/src/asn.c | 8 ++++++-- wolfcrypt/test/test.c | 2 +- wolfssl/wolfcrypt/asn.h | 2 +- 4 files changed, 20 insertions(+), 14 deletions(-) diff --git a/src/crl.c b/src/crl.c index a52234187..6ed89ee85 100644 --- a/src/crl.c +++ b/src/crl.c @@ -55,7 +55,7 @@ int InitCRL(WOLFSSL_CRL* crl, WOLFSSL_CERT_MANAGER* cm) #ifdef WOLFSSL_HEAP_TEST crl->heap = (void*)WOLFSSL_HEAP_TEST; #else - crl->heap = NULL; + crl->heap = cm->heap; #endif crl->cm = cm; crl->crlList = NULL; @@ -101,7 +101,7 @@ static int InitCRL_Entry(CRL_Entry* crle, DecodedCRL* dcrl) /* Free all CRL Entry resources */ -static void FreeCRL_Entry(CRL_Entry* crle) +static void FreeCRL_Entry(CRL_Entry* crle, void* heap) { RevokedCert* tmp = crle->certs; @@ -109,9 +109,11 @@ static void FreeCRL_Entry(CRL_Entry* crle) while(tmp) { RevokedCert* next = tmp->next; - XFREE(tmp, NULL, DYNAMIC_TYPE_REVOKED); + XFREE(tmp, heap, DYNAMIC_TYPE_REVOKED); tmp = next; } + + (void)heap; } @@ -124,15 +126,15 @@ void FreeCRL(WOLFSSL_CRL* crl, int dynamic) WOLFSSL_ENTER("FreeCRL"); if (crl->monitors[0].path) - XFREE(crl->monitors[0].path, NULL, DYNAMIC_TYPE_CRL_MONITOR); + XFREE(crl->monitors[0].path, crl->heap, DYNAMIC_TYPE_CRL_MONITOR); if (crl->monitors[1].path) - XFREE(crl->monitors[1].path, NULL, DYNAMIC_TYPE_CRL_MONITOR); + XFREE(crl->monitors[1].path, crl->heap, DYNAMIC_TYPE_CRL_MONITOR); while(tmp) { CRL_Entry* next = tmp->next; - FreeCRL_Entry(tmp); - XFREE(tmp, NULL, DYNAMIC_TYPE_CRL_ENTRY); + FreeCRL_Entry(tmp, crl->heap); + XFREE(tmp, crl->heap, DYNAMIC_TYPE_CRL_ENTRY); tmp = next; } @@ -149,7 +151,7 @@ void FreeCRL(WOLFSSL_CRL* crl, int dynamic) #endif FreeMutex(&crl->crlLock); if (dynamic) /* free self */ - XFREE(crl, NULL, DYNAMIC_TYPE_CRL); + XFREE(crl, crl->heap, DYNAMIC_TYPE_CRL); } @@ -253,7 +255,7 @@ static int AddCRL(WOLFSSL_CRL* crl, DecodedCRL* dcrl) if (LockMutex(&crl->crlLock) != 0) { WOLFSSL_MSG("LockMutex failed"); - FreeCRL_Entry(crle); + FreeCRL_Entry(crle, crl->heap); XFREE(crle, crl->heap, DYNAMIC_TYPE_CRL_ENTRY); return BAD_MUTEX_E; } @@ -307,7 +309,7 @@ int BufferLoadCRL(WOLFSSL_CRL* crl, const byte* buff, long sz, int type) } #endif - InitDecodedCRL(dcrl); + InitDecodedCRL(dcrl, crl->heap); ret = ParseCRL(dcrl, myBuffer, (word32)sz, crl->cm); if (ret != 0) { WOLFSSL_MSG("ParseCRL error"); diff --git a/wolfcrypt/src/asn.c b/wolfcrypt/src/asn.c index 84d2133bc..b94591be6 100644 --- a/wolfcrypt/src/asn.c +++ b/wolfcrypt/src/asn.c @@ -9522,7 +9522,7 @@ WOLFSSL_LOCAL int GetNameHash(const byte* source, word32* idx, byte* hash, #ifdef HAVE_CRL /* initialize decoded CRL */ -void InitDecodedCRL(DecodedCRL* dcrl) +void InitDecodedCRL(DecodedCRL* dcrl, void* heap) { WOLFSSL_MSG("InitDecodedCRL"); @@ -9532,6 +9532,10 @@ void InitDecodedCRL(DecodedCRL* dcrl) dcrl->signatureOID = 0; dcrl->certs = NULL; dcrl->totalCerts = 0; + dcrl->heap = heap; + #ifdef WOLFSSL_HEAP_TEST + dcrl->heap = (void)WOLFSSL_HEAP_TEST; + #endif } @@ -9544,7 +9548,7 @@ void FreeDecodedCRL(DecodedCRL* dcrl) while(tmp) { RevokedCert* next = tmp->next; - XFREE(tmp, NULL, DYNAMIC_TYPE_REVOKED); + XFREE(tmp, dcrl->heap, DYNAMIC_TYPE_REVOKED); tmp = next; } } diff --git a/wolfcrypt/test/test.c b/wolfcrypt/test/test.c index a6419c756..48939697a 100644 --- a/wolfcrypt/test/test.c +++ b/wolfcrypt/test/test.c @@ -32,7 +32,7 @@ #ifndef NO_CRYPT_TEST -#if defined(WOLFSSL_STATIC_MEMORY) +#if defined(WOLFSSL_STATIC_MEMORY) && !defined(HAVE_IO_POOL) #ifndef HAVE_PKCS7 #define USE_CERT_BUFFERS_1024 /* avoid dynamic memory from fopen */ #endif diff --git a/wolfssl/wolfcrypt/asn.h b/wolfssl/wolfcrypt/asn.h index 2f358885f..d7329f0e1 100644 --- a/wolfssl/wolfcrypt/asn.h +++ b/wolfssl/wolfcrypt/asn.h @@ -812,7 +812,7 @@ struct DecodedCRL { void* heap; }; -WOLFSSL_LOCAL void InitDecodedCRL(DecodedCRL*); +WOLFSSL_LOCAL void InitDecodedCRL(DecodedCRL*, void* heap); WOLFSSL_LOCAL int ParseCRL(DecodedCRL*, const byte* buff, word32 sz, void* cm); WOLFSSL_LOCAL void FreeDecodedCRL(DecodedCRL*);