From 78a0dcb687f1f0b4df415a79c97b10499cdd9f4a Mon Sep 17 00:00:00 2001 From: kaleb-himes Date: Mon, 4 Feb 2019 10:43:15 -0700 Subject: [PATCH] Fix typos and potential leaks in ECC as well --- wolfCLU/clu_src/genkey/clu_genkey.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/wolfCLU/clu_src/genkey/clu_genkey.c b/wolfCLU/clu_src/genkey/clu_genkey.c index 6c35aaf3..87496275 100644 --- a/wolfCLU/clu_src/genkey/clu_genkey.c +++ b/wolfCLU/clu_src/genkey/clu_genkey.c @@ -193,7 +193,7 @@ int wolfCLU_genKey_ECC(RNG* rng, char* fName, int directive, int fmt, * Output key(s) to file(s) */ - /* set up the file name outut beffer */ + /* set up the file name output buffer */ fOutNameBuf = (char*)XMALLOC(fNameSz + fExtSz, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER); if (fOutNameBuf == NULL) @@ -217,18 +217,21 @@ int wolfCLU_genKey_ECC(RNG* rng, char* fName, int directive, int fmt, derBufSz = wc_EccPrivateKeyToDer(&key, derBuf, maxDerBufSz); if (derBufSz < 0) { + XFREE(fOutNameBuf, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER); XFREE(derBuf, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER); return derBufSz; } file = fopen(fOutNameBuf, "wb"); if (file == XBADFILE) { + XFREE(fOutNameBuf, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER); XFREE(derBuf, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER); return OUTPUT_FILE_ERROR; } ret = (int)fwrite(derBuf, 1, derBufSz, file); if (ret <= 0) { + XFREE(fOutNameBuf, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER); XFREE(derBuf, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER); fclose(file); return OUTPUT_FILE_ERROR; @@ -245,6 +248,7 @@ int wolfCLU_genKey_ECC(RNG* rng, char* fName, int directive, int fmt, derBufSz = wc_EccPublicKeyToDer(&key, derBuf, maxDerBufSz, 1); if (derBufSz < 0) { + XFREE(fOutNameBuf, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER); XFREE(derBuf, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER); return derBufSz; } @@ -252,6 +256,7 @@ int wolfCLU_genKey_ECC(RNG* rng, char* fName, int directive, int fmt, file = fopen(fOutNameBuf, "wb"); if (file == XBADFILE) { XFREE(fOutNameBuf, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER); + XFREE(derBuf, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER); return OUTPUT_FILE_ERROR; } @@ -259,6 +264,7 @@ int wolfCLU_genKey_ECC(RNG* rng, char* fName, int directive, int fmt, if (ret <= 0) { fclose(file); XFREE(fOutNameBuf, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER); + XFREE(derBuf, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER); return OUTPUT_FILE_ERROR; } fclose(file); @@ -266,6 +272,7 @@ int wolfCLU_genKey_ECC(RNG* rng, char* fName, int directive, int fmt, default: printf("Invalid directive\n"); XFREE(fOutNameBuf, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER); + XFREE(derBuf, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER); return BAD_FUNC_ARG; } @@ -333,7 +340,7 @@ int wolfCLU_genKey_RSA(RNG* rng, char* fName, int directive, int fmt, int * Output key(s) to file(s) */ - /* set up the file name outut beffer */ + /* set up the file name output buffer */ fOutNameBuf = (char*)XMALLOC(fNameSz + fExtSz, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER); if (fOutNameBuf == NULL)