changed ocsp lookup to use dynamic mem for request rather than stack
This commit is contained in:
parent
26cf98c878
commit
51787db76b
15
src/ocsp.c
15
src/ocsp.c
@ -455,7 +455,7 @@ static int xstat2err(int stat)
|
|||||||
|
|
||||||
int CyaSSL_OCSP_Lookup_Cert(CYASSL_OCSP* ocsp, DecodedCert* cert)
|
int CyaSSL_OCSP_Lookup_Cert(CYASSL_OCSP* ocsp, DecodedCert* cert)
|
||||||
{
|
{
|
||||||
byte ocspReqBuf[SCRATCH_BUFFER_SIZE];
|
byte* ocspReqBuf = NULL;
|
||||||
int ocspReqSz = SCRATCH_BUFFER_SIZE;
|
int ocspReqSz = SCRATCH_BUFFER_SIZE;
|
||||||
byte* ocspRespBuf = NULL;
|
byte* ocspRespBuf = NULL;
|
||||||
OcspRequest ocspRequest;
|
OcspRequest ocspRequest;
|
||||||
@ -502,13 +502,16 @@ int CyaSSL_OCSP_Lookup_Cert(CYASSL_OCSP* ocsp, DecodedCert* cert)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ocspReqBuf = (byte*)XMALLOC(ocspReqSz, NULL, DYNAMIC_TYPE_IN_BUFFER);
|
||||||
|
if (ocspReqBuf == NULL) {
|
||||||
|
CYASSL_MSG("\talloc OCSP request buffer failed");
|
||||||
|
return MEMORY_ERROR;
|
||||||
|
}
|
||||||
InitOcspRequest(&ocspRequest, cert, ocsp->useNonce, ocspReqBuf, ocspReqSz);
|
InitOcspRequest(&ocspRequest, cert, ocsp->useNonce, ocspReqBuf, ocspReqSz);
|
||||||
ocspReqSz = EncodeOcspRequest(&ocspRequest);
|
ocspReqSz = EncodeOcspRequest(&ocspRequest);
|
||||||
result = http_ocsp_transaction(ocsp, cert,
|
result = http_ocsp_transaction(ocsp, cert,
|
||||||
ocspReqBuf, ocspReqSz, &ocspRespBuf);
|
ocspReqBuf, ocspReqSz, &ocspRespBuf);
|
||||||
if (result < 0) return result;
|
if (result >= 0) {
|
||||||
/* If the transaction failed, return that result. */
|
|
||||||
|
|
||||||
InitOcspResponse(&ocspResponse, certStatus, ocspRespBuf, result);
|
InitOcspResponse(&ocspResponse, certStatus, ocspRespBuf, result);
|
||||||
OcspResponseDecode(&ocspResponse);
|
OcspResponseDecode(&ocspResponse);
|
||||||
|
|
||||||
@ -526,6 +529,10 @@ int CyaSSL_OCSP_Lookup_Cert(CYASSL_OCSP* ocsp, DecodedCert* cert)
|
|||||||
result = OCSP_LOOKUP_FAIL;
|
result = OCSP_LOOKUP_FAIL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
if (ocspReqBuf != NULL) {
|
||||||
|
XFREE(ocspReqBuf, NULL, DYNAMIC_TYPE_IN_BUFFER);
|
||||||
|
}
|
||||||
if (ocspRespBuf != NULL) {
|
if (ocspRespBuf != NULL) {
|
||||||
XFREE(ocspRespBuf, NULL, DYNAMIC_TYPE_IN_BUFFER);
|
XFREE(ocspRespBuf, NULL, DYNAMIC_TYPE_IN_BUFFER);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user