diff --git a/src/ssl.c b/src/ssl.c index 3e48f4569..ae8ca740d 100644 --- a/src/ssl.c +++ b/src/ssl.c @@ -7353,12 +7353,12 @@ int ProcessBuffer(WOLFSSL_CTX* ctx, const unsigned char* buff, } #endif /* WOLFSSL_ENCRYPTED_KEYS && !NO_PWDBASED */ - #ifdef WOLFSSL_SMALL_STACK - XFREE(info, heap, DYNAMIC_TYPE_ENCRYPTEDINFO); - #endif - - if (ret != 0) + if (ret != 0) { + #ifdef WOLFSSL_SMALL_STACK + XFREE(info, heap, DYNAMIC_TYPE_ENCRYPTEDINFO); + #endif return ret; + } if (keyFormat == 0) { #ifdef OPENSSL_EXTRA /* Reaching this point probably means that the @@ -7366,10 +7366,17 @@ int ProcessBuffer(WOLFSSL_CTX* ctx, const unsigned char* buff, if (info->passwd_cb) EVPerr(0, EVP_R_BAD_DECRYPT); #endif + #ifdef WOLFSSL_SMALL_STACK + XFREE(info, heap, DYNAMIC_TYPE_ENCRYPTEDINFO); + #endif WOLFSSL_ERROR(WOLFSSL_BAD_FILE); return WOLFSSL_BAD_FILE; } + #ifdef WOLFSSL_SMALL_STACK + XFREE(info, heap, DYNAMIC_TYPE_ENCRYPTEDINFO); + #endif + (void)devId; } else if (type == CERT_TYPE) {