1
0
mirror of https://github.com/moparisthebest/curl synced 2024-12-22 16:18:48 -05:00

main: fix segfault

Follow-up to commit 5eb2396cd as that wasn't complete.

At times HEADERFUNCTION+HEADERDATA was set only to have only HEADERDATA
set in the subsequent loop which could cause a NULL to get sent as
userdata to 'header_callback' which wasn't made to handle that.

Now HEADERFUNCTION is explicitly set to NULL if it isn't set to the
callback.
This commit is contained in:
Daniel Stenberg 2011-08-21 12:59:06 +02:00
parent 838dd8f594
commit 61ae7e9ce7

View File

@ -5415,8 +5415,6 @@ operate(struct Configurable *config, int argc, argv_item_t argv[])
my_setopt(curl, CURLOPT_QUOTE, config->quote); my_setopt(curl, CURLOPT_QUOTE, config->quote);
my_setopt(curl, CURLOPT_POSTQUOTE, config->postquote); my_setopt(curl, CURLOPT_POSTQUOTE, config->postquote);
my_setopt(curl, CURLOPT_PREQUOTE, config->prequote); my_setopt(curl, CURLOPT_PREQUOTE, config->prequote);
my_setopt(curl, CURLOPT_HEADERDATA,
config->headerfile?&heads:NULL);
my_setopt_str(curl, CURLOPT_COOKIEFILE, config->cookiefile); my_setopt_str(curl, CURLOPT_COOKIEFILE, config->cookiefile);
/* cookie jar was added in 7.9 */ /* cookie jar was added in 7.9 */
if(config->cookiejar) if(config->cookiejar)
@ -5621,6 +5619,12 @@ operate(struct Configurable *config, int argc, argv_item_t argv[])
my_setopt(curl, CURLOPT_HEADERFUNCTION, header_callback); my_setopt(curl, CURLOPT_HEADERFUNCTION, header_callback);
my_setopt(curl, CURLOPT_HEADERDATA, &outs); my_setopt(curl, CURLOPT_HEADERDATA, &outs);
} }
else {
/* if HEADERFUNCTION was set to something in the previous loop, it
is important that we set it (back) to NULL now */
my_setopt(curl, CURLOPT_HEADERFUNCTION, NULL);
my_setopt(curl, CURLOPT_HEADERDATA, config->headerfile?&heads:NULL);
}
if(config->resolve) if(config->resolve)
/* new in 7.21.3 */ /* new in 7.21.3 */