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; } }