forked from wolfSSL/wolfssl
ProcessBuffer: fix free call
'info' was freed before use when OPENSSL_EXTRA is defined.
This commit is contained in:
17
src/ssl.c
17
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) {
|
||||
|
Reference in New Issue
Block a user