mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2025-07-30 10:47:28 +02:00
Review comment to reduce stack usage
This commit is contained in:
32
src/ssl.c
32
src/ssl.c
@ -36584,10 +36584,15 @@ WOLFSSL_STACK* wolfSSL_PKCS7_get0_signers(PKCS7* pkcs7, WOLFSSL_STACK* certs,
|
|||||||
|
|
||||||
int wolfSSL_PEM_write_bio_PKCS7(WOLFSSL_BIO* bio, PKCS7* p7)
|
int wolfSSL_PEM_write_bio_PKCS7(WOLFSSL_BIO* bio, PKCS7* p7)
|
||||||
{
|
{
|
||||||
byte outputHead[2048];
|
#ifdef WOLFSSL_SMALL_STACK
|
||||||
byte outputFoot[2048];
|
byte* outputHead;
|
||||||
word32 outputHeadSz = (word32)sizeof(outputHead);
|
byte* outputFoot;
|
||||||
word32 outputFootSz = (word32)sizeof(outputFoot);
|
#else
|
||||||
|
byte outputHead[2048];
|
||||||
|
byte outputFoot[2048];
|
||||||
|
#endif
|
||||||
|
word32 outputHeadSz = 2048;
|
||||||
|
word32 outputFootSz = 2048;
|
||||||
word32 outputSz = 0;
|
word32 outputSz = 0;
|
||||||
byte* output = NULL;
|
byte* output = NULL;
|
||||||
byte* pem = NULL;
|
byte* pem = NULL;
|
||||||
@ -36601,6 +36606,17 @@ int wolfSSL_PEM_write_bio_PKCS7(WOLFSSL_BIO* bio, PKCS7* p7)
|
|||||||
if (bio == NULL || p7 == NULL)
|
if (bio == NULL || p7 == NULL)
|
||||||
return WOLFSSL_FAILURE;
|
return WOLFSSL_FAILURE;
|
||||||
|
|
||||||
|
#ifdef WOLFSSL_SMALL_STACK
|
||||||
|
outputHead = (byte*)XMALLOC(outputHeadSz, bio->heap, DYNAMIC_TYPE_TMP_BUFFER);
|
||||||
|
if (outputHead == NULL)
|
||||||
|
return MEMORY_E;
|
||||||
|
|
||||||
|
outputFoot = (byte*)XMALLOC(outputFootSz, bio->heap, DYNAMIC_TYPE_TMP_BUFFER);
|
||||||
|
if (outputFoot == NULL)
|
||||||
|
goto error;
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
XMEMSET(hashBuf, 0, WC_MAX_DIGEST_SIZE);
|
XMEMSET(hashBuf, 0, WC_MAX_DIGEST_SIZE);
|
||||||
XMEMSET(outputHead, 0, outputHeadSz);
|
XMEMSET(outputHead, 0, outputHeadSz);
|
||||||
XMEMSET(outputFoot, 0, outputFootSz);
|
XMEMSET(outputFoot, 0, outputFootSz);
|
||||||
@ -36661,6 +36677,14 @@ int wolfSSL_PEM_write_bio_PKCS7(WOLFSSL_BIO* bio, PKCS7* p7)
|
|||||||
}
|
}
|
||||||
|
|
||||||
error:
|
error:
|
||||||
|
#ifdef WOLFSSL_SMALL_STACK
|
||||||
|
if (outputHead) {
|
||||||
|
XFREE(outputHead, bio->heap, DYNAMIC_TYPE_TMP_BUFFER);
|
||||||
|
}
|
||||||
|
if (outputFoot) {
|
||||||
|
XFREE(outputFoot, bio->heap, DYNAMIC_TYPE_TMP_BUFFER);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
if (output) {
|
if (output) {
|
||||||
XFREE(output, bio->heap, DYNAMIC_TYPE_TMP_BUFFER);
|
XFREE(output, bio->heap, DYNAMIC_TYPE_TMP_BUFFER);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user