diff --git a/src/pk.c b/src/pk.c index 16b554acf..c25f238e3 100644 --- a/src/pk.c +++ b/src/pk.c @@ -216,7 +216,6 @@ static int der_to_pem_alloc(const unsigned char* der, int derSz, int type, int ret = WOLFSSL_SUCCESS; int pemSz; byte* pem = NULL; - int len; (void)heap; @@ -232,11 +231,11 @@ static int der_to_pem_alloc(const unsigned char* der, int derSz, int type, } } - if (ret == WOLFSSL_SUCCESS) { - len = wc_DerToPem(der, derSz, pem, pemSz, type); - if (len < 0) { - ret = WOLFSSL_FAILURE; - } + if ((ret == WOLFSSL_SUCCESS) && (wc_DerToPem(der, derSz, pem, pemSz, + type) < 0)) { + ret = WOLFSSL_FAILURE; + XFREE(pem, heap, DYNAMIC_TYPE_TMP_BUFFER); + pem = NULL; } *out = pem; @@ -1804,10 +1803,8 @@ static int wolfssl_pem_write_rsa_public_key(XFILE fp, WOLFSSL_RSA* rsa, ret = 0; } - if (derBuf != NULL) { - /* Dispose of DER buffer. */ - XFREE(derBuf, bio->heap, DYNAMIC_TYPE_TMP_BUFFER); - } + /* Dispose of DER buffer. */ + XFREE(derBuf, bio->heap, DYNAMIC_TYPE_TMP_BUFFER); return ret; } @@ -7676,10 +7673,8 @@ int wolfSSL_PEM_write_DHparams(XFILE fp, WOLFSSL_DH* dh) ret = 0; } - if (derBuf != NULL) { - /* Dispose of DER buffer. */ - XFREE(derBuf, bio->heap, DYNAMIC_TYPE_TMP_BUFFER); - } + /* Dispose of DER buffer. */ + XFREE(derBuf, bio->heap, DYNAMIC_TYPE_TMP_BUFFER); WOLFSSL_LEAVE("wolfSSL_PEM_write_DHparams", ret); diff --git a/src/ssl_misc.c b/src/ssl_misc.c index 8db6931d1..d6525a4eb 100644 --- a/src/ssl_misc.c +++ b/src/ssl_misc.c @@ -272,7 +272,7 @@ static int wolfssl_read_file(XFILE fp, char** data, int* dataSz) ret = wolfssl_file_len(fp, &sz); if (ret == 0) { /* Allocate memory big enough to hold whole file. */ - mem = (char*)XMALLOC(sz, NULL, DYNAMIC_TYPE_PEM); + mem = (char*)XMALLOC(sz, NULL, DYNAMIC_TYPE_TMP_BUFFER); if (mem == NULL) { ret = MEMORY_E; } @@ -287,7 +287,7 @@ static int wolfssl_read_file(XFILE fp, char** data, int* dataSz) mem = NULL; } - XFREE(mem, NULL, DYNAMIC_TYPE_PEM); + XFREE(mem, NULL, DYNAMIC_TYPE_TMP_BUFFER); return ret; } #endif /* !NO_FILESYSTEM */