]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
func_curl.c: Prevent crash when using CURLOPT(httpheader)
authorSean Bright <sean.bright@gmail.com>
Fri, 18 Sep 2020 13:09:59 +0000 (09:09 -0400)
committerJoshua Colp <jcolp@sangoma.com>
Wed, 23 Sep 2020 15:05:01 +0000 (10:05 -0500)
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

funcs/func_curl.c

index 3e09d1cbe78337ec6ff6913502bf5ac450b7f4e7..cc3b195f2884a3ac7594bb77bd2640fd72c5cae7 100644 (file)
@@ -721,9 +721,10 @@ static int acf_curl_helper(struct ast_channel *chan, struct curl_args *args)
                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';