|
![](https://seccdn.libravatar.org/avatar/b1ea9b9c6af4f6c514e29d99c9ca5df476b457dd240b3fc14286c5f50f2ff406?s=16&d=retro) |
f7c8df0 |
From 61ae7e9ce77af86a7290fca8bf73c9798f80845c Mon Sep 17 00:00:00 2001
|
|
![](https://seccdn.libravatar.org/avatar/b1ea9b9c6af4f6c514e29d99c9ca5df476b457dd240b3fc14286c5f50f2ff406?s=16&d=retro) |
f7c8df0 |
From: Daniel Stenberg <daniel@haxx.se>
|
|
![](https://seccdn.libravatar.org/avatar/b1ea9b9c6af4f6c514e29d99c9ca5df476b457dd240b3fc14286c5f50f2ff406?s=16&d=retro) |
f7c8df0 |
Date: Sun, 21 Aug 2011 12:59:06 +0200
|
|
![](https://seccdn.libravatar.org/avatar/b1ea9b9c6af4f6c514e29d99c9ca5df476b457dd240b3fc14286c5f50f2ff406?s=16&d=retro) |
f7c8df0 |
Subject: [PATCH] main: fix segfault
|
|
![](https://seccdn.libravatar.org/avatar/b1ea9b9c6af4f6c514e29d99c9ca5df476b457dd240b3fc14286c5f50f2ff406?s=16&d=retro) |
f7c8df0 |
|
|
![](https://seccdn.libravatar.org/avatar/b1ea9b9c6af4f6c514e29d99c9ca5df476b457dd240b3fc14286c5f50f2ff406?s=16&d=retro) |
f7c8df0 |
Follow-up to commit 5eb2396cd as that wasn't complete.
|
|
![](https://seccdn.libravatar.org/avatar/b1ea9b9c6af4f6c514e29d99c9ca5df476b457dd240b3fc14286c5f50f2ff406?s=16&d=retro) |
f7c8df0 |
|
|
![](https://seccdn.libravatar.org/avatar/b1ea9b9c6af4f6c514e29d99c9ca5df476b457dd240b3fc14286c5f50f2ff406?s=16&d=retro) |
f7c8df0 |
At times HEADERFUNCTION+HEADERDATA was set only to have only HEADERDATA
|
|
![](https://seccdn.libravatar.org/avatar/b1ea9b9c6af4f6c514e29d99c9ca5df476b457dd240b3fc14286c5f50f2ff406?s=16&d=retro) |
f7c8df0 |
set in the subsequent loop which could cause a NULL to get sent as
|
|
![](https://seccdn.libravatar.org/avatar/b1ea9b9c6af4f6c514e29d99c9ca5df476b457dd240b3fc14286c5f50f2ff406?s=16&d=retro) |
f7c8df0 |
userdata to 'header_callback' which wasn't made to handle that.
|
|
![](https://seccdn.libravatar.org/avatar/b1ea9b9c6af4f6c514e29d99c9ca5df476b457dd240b3fc14286c5f50f2ff406?s=16&d=retro) |
f7c8df0 |
|
|
![](https://seccdn.libravatar.org/avatar/b1ea9b9c6af4f6c514e29d99c9ca5df476b457dd240b3fc14286c5f50f2ff406?s=16&d=retro) |
f7c8df0 |
Now HEADERFUNCTION is explicitly set to NULL if it isn't set to the
|
|
![](https://seccdn.libravatar.org/avatar/b1ea9b9c6af4f6c514e29d99c9ca5df476b457dd240b3fc14286c5f50f2ff406?s=16&d=retro) |
f7c8df0 |
callback.
|
|
![](https://seccdn.libravatar.org/avatar/b1ea9b9c6af4f6c514e29d99c9ca5df476b457dd240b3fc14286c5f50f2ff406?s=16&d=retro) |
f7c8df0 |
---
|
|
![](https://seccdn.libravatar.org/avatar/b1ea9b9c6af4f6c514e29d99c9ca5df476b457dd240b3fc14286c5f50f2ff406?s=16&d=retro) |
f7c8df0 |
src/main.c | 8 ++++++--
|
|
![](https://seccdn.libravatar.org/avatar/b1ea9b9c6af4f6c514e29d99c9ca5df476b457dd240b3fc14286c5f50f2ff406?s=16&d=retro) |
f7c8df0 |
1 files changed, 6 insertions(+), 2 deletions(-)
|
|
![](https://seccdn.libravatar.org/avatar/b1ea9b9c6af4f6c514e29d99c9ca5df476b457dd240b3fc14286c5f50f2ff406?s=16&d=retro) |
f7c8df0 |
|
|
![](https://seccdn.libravatar.org/avatar/b1ea9b9c6af4f6c514e29d99c9ca5df476b457dd240b3fc14286c5f50f2ff406?s=16&d=retro) |
f7c8df0 |
diff --git a/src/main.c b/src/main.c
|
|
![](https://seccdn.libravatar.org/avatar/b1ea9b9c6af4f6c514e29d99c9ca5df476b457dd240b3fc14286c5f50f2ff406?s=16&d=retro) |
f7c8df0 |
index 276718b..56cd133 100644
|
|
![](https://seccdn.libravatar.org/avatar/b1ea9b9c6af4f6c514e29d99c9ca5df476b457dd240b3fc14286c5f50f2ff406?s=16&d=retro) |
f7c8df0 |
--- a/src/main.c
|
|
![](https://seccdn.libravatar.org/avatar/b1ea9b9c6af4f6c514e29d99c9ca5df476b457dd240b3fc14286c5f50f2ff406?s=16&d=retro) |
f7c8df0 |
+++ b/src/main.c
|
|
![](https://seccdn.libravatar.org/avatar/9df0f3bf6a877587e4d34c87f124e83974433fa519dc892a3f428ed60da9351f?s=16&d=retro) |
e16b731 |
@@ -5270,8 +5270,6 @@ operate(struct Configurable *config, int argc, argv_item_t argv[])
|
|
![](https://seccdn.libravatar.org/avatar/b1ea9b9c6af4f6c514e29d99c9ca5df476b457dd240b3fc14286c5f50f2ff406?s=16&d=retro) |
f7c8df0 |
my_setopt(curl, CURLOPT_QUOTE, config->quote);
|
|
![](https://seccdn.libravatar.org/avatar/b1ea9b9c6af4f6c514e29d99c9ca5df476b457dd240b3fc14286c5f50f2ff406?s=16&d=retro) |
f7c8df0 |
my_setopt(curl, CURLOPT_POSTQUOTE, config->postquote);
|
|
![](https://seccdn.libravatar.org/avatar/b1ea9b9c6af4f6c514e29d99c9ca5df476b457dd240b3fc14286c5f50f2ff406?s=16&d=retro) |
f7c8df0 |
my_setopt(curl, CURLOPT_PREQUOTE, config->prequote);
|
|
![](https://seccdn.libravatar.org/avatar/b1ea9b9c6af4f6c514e29d99c9ca5df476b457dd240b3fc14286c5f50f2ff406?s=16&d=retro) |
f7c8df0 |
- my_setopt(curl, CURLOPT_HEADERDATA,
|
|
![](https://seccdn.libravatar.org/avatar/b1ea9b9c6af4f6c514e29d99c9ca5df476b457dd240b3fc14286c5f50f2ff406?s=16&d=retro) |
f7c8df0 |
- config->headerfile?&heads:NULL);
|
|
![](https://seccdn.libravatar.org/avatar/b1ea9b9c6af4f6c514e29d99c9ca5df476b457dd240b3fc14286c5f50f2ff406?s=16&d=retro) |
f7c8df0 |
my_setopt_str(curl, CURLOPT_COOKIEFILE, config->cookiefile);
|
|
![](https://seccdn.libravatar.org/avatar/b1ea9b9c6af4f6c514e29d99c9ca5df476b457dd240b3fc14286c5f50f2ff406?s=16&d=retro) |
f7c8df0 |
/* cookie jar was added in 7.9 */
|
|
![](https://seccdn.libravatar.org/avatar/b1ea9b9c6af4f6c514e29d99c9ca5df476b457dd240b3fc14286c5f50f2ff406?s=16&d=retro) |
f7c8df0 |
if(config->cookiejar)
|
|
![](https://seccdn.libravatar.org/avatar/9df0f3bf6a877587e4d34c87f124e83974433fa519dc892a3f428ed60da9351f?s=16&d=retro) |
e16b731 |
@@ -5474,6 +5472,12 @@ operate(struct Configurable *config, int argc, argv_item_t argv[])
|
|
![](https://seccdn.libravatar.org/avatar/b1ea9b9c6af4f6c514e29d99c9ca5df476b457dd240b3fc14286c5f50f2ff406?s=16&d=retro) |
f7c8df0 |
my_setopt(curl, CURLOPT_HEADERFUNCTION, header_callback);
|
|
![](https://seccdn.libravatar.org/avatar/b1ea9b9c6af4f6c514e29d99c9ca5df476b457dd240b3fc14286c5f50f2ff406?s=16&d=retro) |
f7c8df0 |
my_setopt(curl, CURLOPT_HEADERDATA, &outs);
|
|
![](https://seccdn.libravatar.org/avatar/b1ea9b9c6af4f6c514e29d99c9ca5df476b457dd240b3fc14286c5f50f2ff406?s=16&d=retro) |
f7c8df0 |
}
|
|
![](https://seccdn.libravatar.org/avatar/b1ea9b9c6af4f6c514e29d99c9ca5df476b457dd240b3fc14286c5f50f2ff406?s=16&d=retro) |
f7c8df0 |
+ else {
|
|
![](https://seccdn.libravatar.org/avatar/b1ea9b9c6af4f6c514e29d99c9ca5df476b457dd240b3fc14286c5f50f2ff406?s=16&d=retro) |
f7c8df0 |
+ /* if HEADERFUNCTION was set to something in the previous loop, it
|
|
![](https://seccdn.libravatar.org/avatar/b1ea9b9c6af4f6c514e29d99c9ca5df476b457dd240b3fc14286c5f50f2ff406?s=16&d=retro) |
f7c8df0 |
+ is important that we set it (back) to NULL now */
|
|
![](https://seccdn.libravatar.org/avatar/b1ea9b9c6af4f6c514e29d99c9ca5df476b457dd240b3fc14286c5f50f2ff406?s=16&d=retro) |
f7c8df0 |
+ my_setopt(curl, CURLOPT_HEADERFUNCTION, NULL);
|
|
![](https://seccdn.libravatar.org/avatar/b1ea9b9c6af4f6c514e29d99c9ca5df476b457dd240b3fc14286c5f50f2ff406?s=16&d=retro) |
f7c8df0 |
+ my_setopt(curl, CURLOPT_HEADERDATA, config->headerfile?&heads:NULL);
|
|
![](https://seccdn.libravatar.org/avatar/b1ea9b9c6af4f6c514e29d99c9ca5df476b457dd240b3fc14286c5f50f2ff406?s=16&d=retro) |
f7c8df0 |
+ }
|
|
![](https://seccdn.libravatar.org/avatar/b1ea9b9c6af4f6c514e29d99c9ca5df476b457dd240b3fc14286c5f50f2ff406?s=16&d=retro) |
f7c8df0 |
|
|
![](https://seccdn.libravatar.org/avatar/b1ea9b9c6af4f6c514e29d99c9ca5df476b457dd240b3fc14286c5f50f2ff406?s=16&d=retro) |
f7c8df0 |
if(config->resolve)
|
|
![](https://seccdn.libravatar.org/avatar/b1ea9b9c6af4f6c514e29d99c9ca5df476b457dd240b3fc14286c5f50f2ff406?s=16&d=retro) |
f7c8df0 |
/* new in 7.21.3 */
|
|
![](https://seccdn.libravatar.org/avatar/b1ea9b9c6af4f6c514e29d99c9ca5df476b457dd240b3fc14286c5f50f2ff406?s=16&d=retro) |
f7c8df0 |
--
|
|
![](https://seccdn.libravatar.org/avatar/b1ea9b9c6af4f6c514e29d99c9ca5df476b457dd240b3fc14286c5f50f2ff406?s=16&d=retro) |
f7c8df0 |
1.7.6
|
|
![](https://seccdn.libravatar.org/avatar/b1ea9b9c6af4f6c514e29d99c9ca5df476b457dd240b3fc14286c5f50f2ff406?s=16&d=retro) |
f7c8df0 |
|