Skip to content

Commit d87cd2c

Browse files
committed
ProcessBuffer: fix free call
'info' was freed before use when OPENSSL_EXTRA is defined.
1 parent 5da7efa commit d87cd2c

1 file changed

Lines changed: 12 additions & 5 deletions

File tree

src/ssl.c

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7353,23 +7353,30 @@ int ProcessBuffer(WOLFSSL_CTX* ctx, const unsigned char* buff,
73537353
}
73547354
#endif /* WOLFSSL_ENCRYPTED_KEYS && !NO_PWDBASED */
73557355

7356-
#ifdef WOLFSSL_SMALL_STACK
7357-
XFREE(info, heap, DYNAMIC_TYPE_ENCRYPTEDINFO);
7358-
#endif
7359-
7360-
if (ret != 0)
7356+
if (ret != 0) {
7357+
#ifdef WOLFSSL_SMALL_STACK
7358+
XFREE(info, heap, DYNAMIC_TYPE_ENCRYPTEDINFO);
7359+
#endif
73617360
return ret;
7361+
}
73627362
if (keyFormat == 0) {
73637363
#ifdef OPENSSL_EXTRA
73647364
/* Reaching this point probably means that the
73657365
* decryption password is wrong */
73667366
if (info->passwd_cb)
73677367
EVPerr(0, EVP_R_BAD_DECRYPT);
73687368
#endif
7369+
#ifdef WOLFSSL_SMALL_STACK
7370+
XFREE(info, heap, DYNAMIC_TYPE_ENCRYPTEDINFO);
7371+
#endif
73697372
WOLFSSL_ERROR(WOLFSSL_BAD_FILE);
73707373
return WOLFSSL_BAD_FILE;
73717374
}
73727375

7376+
#ifdef WOLFSSL_SMALL_STACK
7377+
XFREE(info, heap, DYNAMIC_TYPE_ENCRYPTEDINFO);
7378+
#endif
7379+
73737380
(void)devId;
73747381
}
73757382
else if (type == CERT_TYPE) {

0 commit comments

Comments
 (0)