Hello,
I think that I have discovered a small problem in curl_download.c code, can
you please verify? The problem is around line 220:
if (!handle)
curl_easy_cleanup ( curl );
if (curl_send_headers) {
curl_slist_free_all(curl_send_headers);
curl_send_headers = NULL;
curl_easy_setopt ( curl, CURLOPT_HTTPHEADER , NULL);
}
The code first runs curl_easy_cleanup() on curl handle, and later (if
curl_send_headers is true) the code also executes curl_easy_setopt() on the
previously cleaned-up curl handle.
The documentation for curl_easy_cleanup() (
https://curl.haxx.se/libcurl/c/curl_easy_cleanup.html) states:
"Any use of the handle after this function has been called and have
returned, is illegal. curl_easy_cleanup kills the handle and all memory
associated with it!"
curl_easy_cleanup() is also used in two other places. The second place
probably suffers from the same problem.
I didn't verify the third place where the function is called.
curl_easy_cleanup() is inside a wrapper that may be used in less obvious
ways. Perhaps setting the handle to NULL after
curl_easy_cleanup() and then testing if the handle is NULL would help
catching any problems caused by third call to curl_easy_cleanup().
Best regards,
Kamil
_______________________________________________
Viking-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/viking-devel
Viking home page: http://viking.sf.net/