From: Dan Fandrich Date: Thu, 30 Jan 2014 23:05:36 +0000 (+0100) Subject: pipeline: Fixed a NULL pointer dereference on OOM X-Git-Tag: curl-7_36_0~253 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=0f213fdca1652b115998dd8cf0d0e3f260500594;p=curl pipeline: Fixed a NULL pointer dereference on OOM --- diff --git a/lib/pipeline.c b/lib/pipeline.c index dfa3c7af1..8d2544b83 100644 --- a/lib/pipeline.c +++ b/lib/pipeline.c @@ -201,11 +201,18 @@ CURLMcode Curl_pipeline_set_site_blacklist(char **sites, char *port; struct site_blacklist_entry *entry; - entry = malloc(sizeof(struct site_blacklist_entry)); - hostname = strdup(*sites); - if(!hostname) + if(!hostname) { + Curl_llist_destroy(new_list, NULL); + return CURLM_OUT_OF_MEMORY; + } + + entry = malloc(sizeof(struct site_blacklist_entry)); + if(!entry) { + free(hostname); + Curl_llist_destroy(new_list, NULL); return CURLM_OUT_OF_MEMORY; + } port = strchr(hostname, ':'); if(port) { @@ -220,8 +227,11 @@ CURLMcode Curl_pipeline_set_site_blacklist(char **sites, entry->hostname = hostname; - if(!Curl_llist_insert_next(new_list, new_list->tail, entry)) + if(!Curl_llist_insert_next(new_list, new_list->tail, entry)) { + site_blacklist_llist_dtor(NULL, entry); + Curl_llist_destroy(new_list, NULL); return CURLM_OUT_OF_MEMORY; + } sites++; }