Cleanup of the ASN X509 header and XSTRNCPY logic.

This commit is contained in:
David Garske
2018-03-05 16:11:12 -08:00
parent e95fa69a9b
commit 57e9b3c994

View File

@@ -7264,6 +7264,8 @@ WOLFSSL_LOCAL int GetSerialNumber(const byte* input, word32* inOutIdx,
}
/* Max X509 header length indicates the max length + 2 ('\n', '\0') */
#define MAX_X509_HEADER_SZ (37 + 2)
const char* const BEGIN_CERT = "-----BEGIN CERTIFICATE-----";
const char* const END_CERT = "-----END CERTIFICATE-----";
@@ -7314,16 +7316,15 @@ int wc_DerToPem(const byte* der, word32 derSz,
int wc_DerToPemEx(const byte* der, word32 derSz, byte* output, word32 outSz,
byte *cipher_info, int type)
{
int headerLen = MAX_X509_HEADER_SZ + HEADER_ENCRYPTED_KEY_SIZE;
int footerLen = MAX_X509_HEADER_SZ;
#ifdef WOLFSSL_SMALL_STACK
char* header = NULL;
char* footer = NULL;
#else
char header[40 + HEADER_ENCRYPTED_KEY_SIZE];
char footer[40];
char header[headerLen];
char footer[footerLen];
#endif
int headerLen = 40 + HEADER_ENCRYPTED_KEY_SIZE;
int footerLen = 40;
int i;
int err;
int outLen; /* return length or error */
@@ -7344,10 +7345,8 @@ int wc_DerToPemEx(const byte* der, word32 derSz, byte* output, word32 outSz,
#endif
/* null term and leave room for \n */
header[headerLen-1] = '\0';
footer[footerLen-1] = '\0';
headerLen -= 2;
footerLen -= 2;
header[--headerLen] = '\0';
footer[--footerLen] = '\0';
if (type == CERT_TYPE) {
XSTRNCPY(header, BEGIN_CERT, headerLen);