now strdups the cookielist inpointer before passed on, as the cookie function
authorDaniel Stenberg <daniel@haxx.se>
Thu, 28 Jul 2005 21:50:34 +0000 (21:50 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Thu, 28 Jul 2005 21:50:34 +0000 (21:50 +0000)
modifies it

lib/url.c

index 7c34ee1..2cef9e4 100644 (file)
--- a/lib/url.c
+++ b/lib/url.c
@@ -780,32 +780,37 @@ CURLcode Curl_setopt(struct SessionHandle *data, CURLoption option,
   case CURLOPT_COOKIELIST:
     argptr = va_arg(param, char *);
 
-    if (argptr == NULL)
+    if(argptr == NULL)
       break;
 
-    if (strequal(argptr, "ALL")) {
-      if (data->cookies == NULL) {
-        break;
-      }
-      else {
+    if(strequal(argptr, "ALL")) {
+      if(data->cookies) {
         /* clear all cookies */
         Curl_cookie_freelist(data->cookies->cookies);
         data->cookies->cookies = NULL;
-        break;
       }
+      break;
     }
 
-    if (!data->cookies)
+    if(!data->cookies)
       /* if cookie engine was not running, activate it */
       data->cookies = Curl_cookie_init(data, NULL, NULL, TRUE);
 
-    if (checkprefix("Set-Cookie:", argptr))
+    argptr = strdup(argptr);
+    if(!argptr) {
+      result = CURLE_OUT_OF_MEMORY;
+      break;
+    }
+
+    if(checkprefix("Set-Cookie:", argptr))
       /* HTTP Header format line */
       Curl_cookie_add(data, data->cookies, TRUE, argptr + 11, NULL, NULL);
 
     else
       /* Netscape format line */
       Curl_cookie_add(data, data->cookies, FALSE, argptr, NULL, NULL);
+
+    free(argptr);
     break;
 #endif /* CURL_DISABLE_COOKIES */