From 76e0a8666be6cd38a59118026260807f54239eae Mon Sep 17 00:00:00 2001 From: Guido Vranken Date: Sun, 6 Jun 2021 03:12:53 +0200 Subject: [PATCH] Catch allocation failure in DecodeResponseData --- wolfcrypt/src/asn.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/wolfcrypt/src/asn.c b/wolfcrypt/src/asn.c index 9df7aaa3d..3ee47af19 100644 --- a/wolfcrypt/src/asn.c +++ b/wolfcrypt/src/asn.c @@ -17472,12 +17472,20 @@ static int DecodeResponseData(byte* source, if (single->next == NULL) { return MEMORY_E; } - single = single->next; - XMEMSET(single, 0, sizeof(OcspEntry)); - single->status = (CertStatus*)XMALLOC(sizeof(CertStatus), + XMEMSET(single->next, 0, sizeof(OcspEntry)); + + single->next->status = (CertStatus*)XMALLOC(sizeof(CertStatus), resp->heap, DYNAMIC_TYPE_OCSP_STATUS); - XMEMSET(single->status, 0, sizeof(CertStatus)); - single->isDynamic = 1; + if ( single->next->status == NULL ) { + XFREE(single->next, resp->heap, DYNAMIC_TYPE_OCSP_ENTRY); + single->next = NULL; + return MEMORY_E; + } + XMEMSET(single->next->status, 0, sizeof(CertStatus)); + + single->next->isDynamic = 1; + + single = single->next; } }