mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2025-07-31 19:24:42 +02:00
Merge pull request #1649 from embhorn/zd4043
Fix for memory leak in wolfSSL_BN_hex2bn
This commit is contained in:
13
src/ssl.c
13
src/ssl.c
@@ -22231,6 +22231,7 @@ int wolfSSL_BN_hex2bn(WOLFSSL_BIGNUM** bn, const char* str)
|
|||||||
#else
|
#else
|
||||||
byte decoded[1024];
|
byte decoded[1024];
|
||||||
#endif
|
#endif
|
||||||
|
int weOwn = 0;
|
||||||
|
|
||||||
WOLFSSL_MSG("wolfSSL_BN_hex2bn");
|
WOLFSSL_MSG("wolfSSL_BN_hex2bn");
|
||||||
|
|
||||||
@@ -22247,13 +22248,21 @@ int wolfSSL_BN_hex2bn(WOLFSSL_BIGNUM** bn, const char* str)
|
|||||||
else if (bn == NULL)
|
else if (bn == NULL)
|
||||||
ret = decSz;
|
ret = decSz;
|
||||||
else {
|
else {
|
||||||
if (*bn == NULL)
|
if (*bn == NULL) {
|
||||||
*bn = wolfSSL_BN_new();
|
*bn = wolfSSL_BN_new();
|
||||||
|
if (*bn != NULL) {
|
||||||
|
weOwn = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (*bn == NULL)
|
if (*bn == NULL)
|
||||||
WOLFSSL_MSG("BN new failed");
|
WOLFSSL_MSG("BN new failed");
|
||||||
else if (wolfSSL_BN_bin2bn(decoded, decSz, *bn) == NULL)
|
else if (wolfSSL_BN_bin2bn(decoded, decSz, *bn) == NULL) {
|
||||||
WOLFSSL_MSG("Bad bin2bn error");
|
WOLFSSL_MSG("Bad bin2bn error");
|
||||||
|
if (weOwn == 1) {
|
||||||
|
wolfSSL_BN_free(*bn); /* Free new BN */
|
||||||
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
ret = WOLFSSL_SUCCESS;
|
ret = WOLFSSL_SUCCESS;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user