From 1fbc3dc2d4e6f35bff046545bdd8e03db3759a12 Mon Sep 17 00:00:00 2001 From: Guido Vranken Date: Wed, 26 May 2021 21:41:47 +0200 Subject: [PATCH] Heap-allocate additional CertStatus structs in DecodeResponseData --- wolfcrypt/src/asn.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/wolfcrypt/src/asn.c b/wolfcrypt/src/asn.c index 81e3eeeec..9df7aaa3d 100644 --- a/wolfcrypt/src/asn.c +++ b/wolfcrypt/src/asn.c @@ -17472,10 +17472,11 @@ static int DecodeResponseData(byte* source, if (single->next == NULL) { return MEMORY_E; } - CertStatus* status = single->status; single = single->next; XMEMSET(single, 0, sizeof(OcspEntry)); - single->status = status; + single->status = (CertStatus*)XMALLOC(sizeof(CertStatus), + resp->heap, DYNAMIC_TYPE_OCSP_STATUS); + XMEMSET(single->status, 0, sizeof(CertStatus)); single->isDynamic = 1; } } @@ -17672,8 +17673,10 @@ void FreeOcspResponse(OcspResponse* resp) OcspEntry *single, *next; for (single = resp->single; single; single = next) { next = single->next; - if (single->isDynamic) + if (single->isDynamic) { + XFREE(single->status, resp->heap, DYNAMIC_TYPE_OCSP_STATUS); XFREE(single, resp->heap, DYNAMIC_TYPE_OCSP_ENTRY); + } } }