mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2025-08-03 20:54:41 +02:00
fix potential resource leaks
This commit is contained in:
34
src/ssl.c
34
src/ssl.c
@@ -3447,8 +3447,10 @@ int wolfSSL_CTX_load_verify_locations(WOLFSSL_CTX* ctx, const char* file,
|
|||||||
|
|
||||||
#ifdef WOLFSSL_SMALL_STACK
|
#ifdef WOLFSSL_SMALL_STACK
|
||||||
name = (char*)XMALLOC(MAX_FILENAME_SZ, NULL, DYNAMIC_TYPE_TMP_BUFFER);
|
name = (char*)XMALLOC(MAX_FILENAME_SZ, NULL, DYNAMIC_TYPE_TMP_BUFFER);
|
||||||
if (name == NULL)
|
if (name == NULL) {
|
||||||
|
closedir(dir);
|
||||||
return MEMORY_E;
|
return MEMORY_E;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
while ( ret == SSL_SUCCESS && (entry = readdir(dir)) != NULL) {
|
while ( ret == SSL_SUCCESS && (entry = readdir(dir)) != NULL) {
|
||||||
@@ -10780,6 +10782,7 @@ int wolfSSL_cmp_peer_cert_to_file(WOLFSSL* ssl, const char *fname)
|
|||||||
WOLFSSL_X509* peer_cert = &ssl->peerCert;
|
WOLFSSL_X509* peer_cert = &ssl->peerCert;
|
||||||
buffer fileDer;
|
buffer fileDer;
|
||||||
|
|
||||||
|
fileDer.buffer = 0;
|
||||||
file = XFOPEN(fname, "rb");
|
file = XFOPEN(fname, "rb");
|
||||||
if (file == XBADFILE)
|
if (file == XBADFILE)
|
||||||
return SSL_BAD_FILE;
|
return SSL_BAD_FILE;
|
||||||
@@ -10805,7 +10808,6 @@ int wolfSSL_cmp_peer_cert_to_file(WOLFSSL* ssl, const char *fname)
|
|||||||
info->set = 0;
|
info->set = 0;
|
||||||
info->ctx = ctx;
|
info->ctx = ctx;
|
||||||
info->consumed = 0;
|
info->consumed = 0;
|
||||||
fileDer.buffer = 0;
|
|
||||||
|
|
||||||
if ((myBuffer != NULL) &&
|
if ((myBuffer != NULL) &&
|
||||||
(sz > 0) &&
|
(sz > 0) &&
|
||||||
@@ -11158,11 +11160,14 @@ int wolfSSL_BN_bn2bin(const WOLFSSL_BIGNUM* bn, unsigned char* r)
|
|||||||
WOLFSSL_BIGNUM* wolfSSL_BN_bin2bn(const unsigned char* str, int len,
|
WOLFSSL_BIGNUM* wolfSSL_BN_bin2bn(const unsigned char* str, int len,
|
||||||
WOLFSSL_BIGNUM* ret)
|
WOLFSSL_BIGNUM* ret)
|
||||||
{
|
{
|
||||||
|
int weOwn = 0;
|
||||||
|
|
||||||
WOLFSSL_MSG("wolfSSL_BN_bin2bn");
|
WOLFSSL_MSG("wolfSSL_BN_bin2bn");
|
||||||
|
|
||||||
/* if ret is null create a BN */
|
/* if ret is null create a BN */
|
||||||
if (ret == NULL) {
|
if (ret == NULL) {
|
||||||
ret = wolfSSL_BN_new();
|
ret = wolfSSL_BN_new();
|
||||||
|
weOwn = 1;
|
||||||
if (ret == NULL)
|
if (ret == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
@@ -11171,6 +11176,8 @@ WOLFSSL_BIGNUM* wolfSSL_BN_bin2bn(const unsigned char* str, int len,
|
|||||||
if (ret && ret->internal) {
|
if (ret && ret->internal) {
|
||||||
if (mp_read_unsigned_bin((mp_int*)ret->internal, str, len) != 0) {
|
if (mp_read_unsigned_bin((mp_int*)ret->internal, str, len) != 0) {
|
||||||
WOLFSSL_MSG("mp_read_unsigned_bin failure");
|
WOLFSSL_MSG("mp_read_unsigned_bin failure");
|
||||||
|
if (weOwn)
|
||||||
|
wolfSSL_BN_free(ret);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -11421,20 +11428,11 @@ int wolfSSL_BN_lshift(WOLFSSL_BIGNUM *r, const WOLFSSL_BIGNUM *bn, int n)
|
|||||||
{
|
{
|
||||||
WOLFSSL_MSG("wolfSSL_BN_lshift");
|
WOLFSSL_MSG("wolfSSL_BN_lshift");
|
||||||
|
|
||||||
if (bn == NULL || bn->internal == NULL) {
|
if (r == NULL || r->internal == NULL || bn == NULL || bn->internal == NULL){
|
||||||
WOLFSSL_MSG("bn NULL error");
|
WOLFSSL_MSG("bn NULL error");
|
||||||
return SSL_FAILURE;
|
return SSL_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* create new bn for res, if not done before */
|
|
||||||
if (r == NULL)
|
|
||||||
r = wolfSSL_BN_new();
|
|
||||||
|
|
||||||
if (r == NULL) {
|
|
||||||
WOLFSSL_MSG("bn new error");
|
|
||||||
return SSL_FAILURE;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (mp_mul_2d((mp_int*)bn->internal, n, (mp_int*)r->internal) != MP_OKAY) {
|
if (mp_mul_2d((mp_int*)bn->internal, n, (mp_int*)r->internal) != MP_OKAY) {
|
||||||
WOLFSSL_MSG("mp_mul_2d error");
|
WOLFSSL_MSG("mp_mul_2d error");
|
||||||
return SSL_FAILURE;
|
return SSL_FAILURE;
|
||||||
@@ -11450,20 +11448,11 @@ int wolfSSL_BN_rshift(WOLFSSL_BIGNUM *r, const WOLFSSL_BIGNUM *bn, int n)
|
|||||||
{
|
{
|
||||||
WOLFSSL_MSG("wolfSSL_BN_rshift");
|
WOLFSSL_MSG("wolfSSL_BN_rshift");
|
||||||
|
|
||||||
if (bn == NULL || bn->internal == NULL) {
|
if (r == NULL || r->internal == NULL || bn == NULL || bn->internal == NULL){
|
||||||
WOLFSSL_MSG("bn NULL error");
|
WOLFSSL_MSG("bn NULL error");
|
||||||
return SSL_FAILURE;
|
return SSL_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* create new bn for res, if not done before */
|
|
||||||
if (r == NULL)
|
|
||||||
r = wolfSSL_BN_new();
|
|
||||||
|
|
||||||
if (r == NULL) {
|
|
||||||
WOLFSSL_MSG("bn new error");
|
|
||||||
return SSL_FAILURE;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (mp_div_2d((mp_int*)bn->internal, n,
|
if (mp_div_2d((mp_int*)bn->internal, n,
|
||||||
(mp_int*)r->internal, NULL) != MP_OKAY) {
|
(mp_int*)r->internal, NULL) != MP_OKAY) {
|
||||||
WOLFSSL_MSG("mp_mul_2d error");
|
WOLFSSL_MSG("mp_mul_2d error");
|
||||||
@@ -11471,7 +11460,6 @@ int wolfSSL_BN_rshift(WOLFSSL_BIGNUM *r, const WOLFSSL_BIGNUM *bn, int n)
|
|||||||
}
|
}
|
||||||
|
|
||||||
return SSL_SUCCESS;
|
return SSL_SUCCESS;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* return code compliant with OpenSSL :
|
/* return code compliant with OpenSSL :
|
||||||
|
Reference in New Issue
Block a user