修复多处内存泄漏。

This commit is contained in:
zhengchao
2018-11-29 16:24:45 +08:00
parent bcfed2bab1
commit f76a8c5ca2
7 changed files with 48 additions and 28 deletions

View File

@@ -300,12 +300,12 @@ static struct keyring_private* get_keyring_from_response(const char* data)
STACK_OF(X509)* chain = NULL;
if(data == NULL)
{
return NULL;
goto error_out;
}
cJSON* data_json = cJSON_Parse(data);
if(data_json == NULL)
{
return NULL;
goto error_out;
}
cJSON* cert_json = NULL;
cJSON* key_json = NULL;
@@ -319,8 +319,7 @@ static struct keyring_private* get_keyring_from_response(const char* data)
}
if(cert == NULL)
{
err_out(cert, key, chain);
return NULL;
goto error_out;
}
if (key_json && key_json->valuestring != NULL)
{
@@ -328,13 +327,11 @@ static struct keyring_private* get_keyring_from_response(const char* data)
}
if(key == NULL)
{
err_out(cert, key, chain);
return NULL;
goto error_out;
}
if(chain_json == NULL)
{
err_out(cert, key, chain);
return NULL;
goto error_out;
}
cJSON* chain_cert_json = NULL;
chain = sk_X509_new_null();
@@ -347,8 +344,7 @@ static struct keyring_private* get_keyring_from_response(const char* data)
}
if(chain_cert == NULL)
{
err_out(cert, key, chain);
return NULL;
goto error_out;
}
sk_X509_push(chain, chain_cert);
ssl_x509_refcount_inc(chain_cert);
@@ -359,8 +355,17 @@ static struct keyring_private* get_keyring_from_response(const char* data)
keyring_set_chain(_kyr, chain);
X509_free(cert);
EVP_PKEY_free(key);
sk_X509_pop_free(chain, X509_free);
sk_X509_pop_free(chain, X509_free);
cJSON_free(data_json);
return _kyr;
error_out:
if(data_json!=NULL) cJSON_free(data_json);
if(cert) X509_free(cert);
if(key) EVP_PKEY_free(key);
if(chain) sk_X509_pop_free(chain, X509_free);
return NULL;
}
static long keyring_local_cache_query_cb(void * data, const uchar * key, uint size, void * user_arg)
@@ -600,6 +605,7 @@ char* url_escape(char* url)
{
_url = curl_easy_escape(curl, url, strlen(url));
}
curl_easy_cleanup(curl);
return _url;
}