From: Sean Bright Date: Fri, 18 Sep 2020 13:09:59 +0000 (-0400) Subject: func_curl.c: Prevent crash when using CURLOPT(httpheader) X-Git-Tag: 13.38.0-rc1~19 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=59492c475c4d9b055ec1ce919ea13105e1ce4207;p=thirdparty%2Fasterisk.git func_curl.c: Prevent crash when using CURLOPT(httpheader) Because we use shared thread-local cURL instances, we need to ensure that the state of the cURL instance is correct before each invocation. In the case of custom headers, we were not resetting cURL's internal HTTP header pointer which could result in a crash if subsequent requests do not configure custom headers. ASTERISK-29085 #close Change-Id: I8b4ab34038156dfba613030a45f10e932d2e992d --- diff --git a/funcs/func_curl.c b/funcs/func_curl.c index b6b61819f7..3016cc8e3e 100644 --- a/funcs/func_curl.c +++ b/funcs/func_curl.c @@ -705,9 +705,10 @@ static int acf_curl_helper(struct ast_channel *chan, const char *cmd, char *info curl_easy_setopt(*curl, CURLOPT_POSTFIELDS, args.postdata); } - if (headers) { - curl_easy_setopt(*curl, CURLOPT_HTTPHEADER, headers); - } + /* Always assign the headers - even when NULL - in case we had + * custom headers the last time we used this shared cURL + * instance */ + curl_easy_setopt(*curl, CURLOPT_HTTPHEADER, headers); /* Temporarily assign a buffer for curl to write errors to. */ curl_errbuf[0] = curl_errbuf[CURL_ERROR_SIZE] = '\0';