Heap-allocate additional CertStatus structs in DecodeResponseData

This commit is contained in:
Guido Vranken
2021-05-26 21:41:47 +02:00
parent cfef249041
commit 1fbc3dc2d4

View File

@ -17472,10 +17472,11 @@ static int DecodeResponseData(byte* source,
if (single->next == NULL) { if (single->next == NULL) {
return MEMORY_E; return MEMORY_E;
} }
CertStatus* status = single->status;
single = single->next; single = single->next;
XMEMSET(single, 0, sizeof(OcspEntry)); 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; single->isDynamic = 1;
} }
} }
@ -17672,8 +17673,10 @@ void FreeOcspResponse(OcspResponse* resp)
OcspEntry *single, *next; OcspEntry *single, *next;
for (single = resp->single; single; single = next) { for (single = resp->single; single; single = next) {
next = 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); XFREE(single, resp->heap, DYNAMIC_TYPE_OCSP_ENTRY);
}
} }
} }