]> granicus.if.org Git - curl/commitdiff
cookie: handle spaces after the name in Set-Cookie
authorDaniel Stenberg <daniel@haxx.se>
Wed, 1 Apr 2015 21:25:29 +0000 (23:25 +0200)
committerDaniel Stenberg <daniel@haxx.se>
Wed, 1 Apr 2015 21:25:29 +0000 (23:25 +0200)
"name =value" is fine and the space should just be skipped.

Updated test 31 to also test for this.

Bug: https://github.com/bagder/curl/issues/195
Reported-by: cromestant
Help-by: Frank Gevaerts
lib/cookie.c
tests/data/test31

index f1450e9051ba65b9f26aee0d9371055bb5b5d313..0864f6bcf795523b58bbc343ec6dc43ecc4a2059 100644 (file)
@@ -407,7 +407,7 @@ Curl_cookie_add(struct SessionHandle *data,
     do {
       /* we have a <what>=<this> pair or a stand-alone word here */
       name[0]=what[0]=0; /* init the buffers */
-      if(1 <= sscanf(ptr, "%" MAX_NAME_TXT "[^;\r\n =]=%"
+      if(1 <= sscanf(ptr, "%" MAX_NAME_TXT "[^;\r\n =] =%"
                      MAX_COOKIE_LINE_TXT "[^;\r\n]",
                      name, what)) {
         /* Use strstore() below to properly deal with received cookie
index dfcac0458700948fb42e43cf36dda28babce737d..7cf556c0cf5d2beb87fe9e55f7b8a7093edc2d8c 100644 (file)
@@ -53,6 +53,10 @@ Set-Cookie: test2=yes; domain=se; expires=Sat Feb 2 11:56:27 GMT 2030
 Set-Cookie: magic=yessir; path=/silly/; HttpOnly\r
 Set-Cookie: blexp=yesyes; domain=127.0.0.1; domain=127.0.0.1; expiry=totally bad;\r
 Set-Cookie: partialip=nono; domain=.0.0.1;\r
+Set-Cookie: withspaces=  yes  within and around    ;\r
+Set-Cookie: withspaces2 =before equals;\r
+Set-Cookie: prespace=  yes before;\r
+Set-Cookie: securewithspace=after    ; secure =\r
 \r
 boo
 </data>
@@ -124,6 +128,10 @@ Accept: */*
 127.0.0.1      FALSE   /we/want/       FALSE   2054030187      nodomain        value
 #HttpOnly_127.0.0.1    FALSE   /silly/ FALSE   0       magic   yessir
 127.0.0.1      FALSE   /we/want/       FALSE   0       blexp   yesyes
+127.0.0.1      FALSE   /we/want/       FALSE   0       withspaces      yes  within and around
+127.0.0.1      FALSE   /we/want/       FALSE   0       withspaces2     before equals
+127.0.0.1      FALSE   /we/want/       FALSE   0       prespace        yes before
+127.0.0.1      FALSE   /we/want/       TRUE    0       securewithspace after
 </file>
 </verify>
 </testcase>