From: Brandon Arp Date: Fri, 15 Apr 2016 18:37:44 +0000 (-0700) Subject: fix potential curl plugin curl_slist_append memory leak X-Git-Tag: collectd-5.5.2~6^2~11 X-Git-Url: https://git.octo.it/?a=commitdiff_plain;h=5b1caeeadcecd798ee4b386b15c17cb7591a8bfe;p=collectd.git fix potential curl plugin curl_slist_append memory leak make sure that we dont leak memory if curl_slist_append returns null --- diff --git a/src/curl.c b/src/curl.c index 9d2196ac..8b30fa4b 100644 --- a/src/curl.c +++ b/src/curl.c @@ -165,16 +165,19 @@ static void cc_web_page_free (web_page_t *wp) /* {{{ */ static int cc_config_append_string (const char *name, struct curl_slist **dest, /* {{{ */ oconfig_item_t *ci) { + struct curl_slist *temp = NULL; if ((ci->values_num != 1) || (ci->values[0].type != OCONFIG_TYPE_STRING)) { WARNING ("curl plugin: `%s' needs exactly one string argument.", name); return (-1); } - *dest = curl_slist_append(*dest, ci->values[0].value.string); - if (*dest == NULL) + temp = curl_slist_append(*dest, ci->values[0].value.string); + if (temp == NULL) return (-1); + *dest = temp; + return (0); } /* }}} int cc_config_append_string */ diff --git a/src/curl_json.c b/src/curl_json.c index 6b8449c9..2314bfe9 100644 --- a/src/curl_json.c +++ b/src/curl_json.c @@ -444,16 +444,19 @@ static c_avl_tree_t *cj_avl_create(void) static int cj_config_append_string (const char *name, struct curl_slist **dest, /* {{{ */ oconfig_item_t *ci) { + struct curl_slist *temp = NULL; if ((ci->values_num != 1) || (ci->values[0].type != OCONFIG_TYPE_STRING)) { WARNING ("curl_json plugin: `%s' needs exactly one string argument.", name); return (-1); } - *dest = curl_slist_append(*dest, ci->values[0].value.string); - if (*dest == NULL) + temp = curl_slist_append(*dest, ci->values[0].value.string); + if (temp == NULL) return (-1); + *dest = temp; + return (0); } /* }}} int cj_config_append_string */ diff --git a/src/curl_xml.c b/src/curl_xml.c index d34b69ef..9483738b 100644 --- a/src/curl_xml.c +++ b/src/curl_xml.c @@ -215,16 +215,19 @@ static void cx_free (void *arg) /* {{{ */ static int cx_config_append_string (const char *name, struct curl_slist **dest, /* {{{ */ oconfig_item_t *ci) { + struct curl_slist *temp = NULL; if ((ci->values_num != 1) || (ci->values[0].type != OCONFIG_TYPE_STRING)) { WARNING ("curl_xml plugin: `%s' needs exactly one string argument.", name); return (-1); } - *dest = curl_slist_append(*dest, ci->values[0].value.string); - if (*dest == NULL) + temp = curl_slist_append(*dest, ci->values[0].value.string); + if (temp == NULL) return (-1); + *dest = temp; + return (0); } /* }}} int cx_config_append_string */