mirror of
https://github.com/curl/curl.git
synced 2026-08-25 00:13:34 +03:00
cookie: cleanups and improvements
- Stricter cookie validation with earlier rejection of empty/invalid cookie names - secure and httponly attributes no longer accept = with empty values (only bare keywords) - Validation checks (length, TAB, prefixes) moved into the first name/value pair block for better code organization - Deferred time(NULL) calls for better performance when expires/max-age aren't used - Simplified loop control flow by removing done flag - The cookie size restriction now only applies to name + value, not other parts of the header line. - Fixed a gcc 4.8.1 quirk Closes #19868
This commit is contained in:
parent
a093c93994
commit
a78a07d3a9
3 changed files with 87 additions and 105 deletions
|
|
@ -14,7 +14,7 @@ cookies
|
|||
HTTP/1.1 200 OK
|
||||
Date: Tue, 09 Nov 2010 14:49:00 GMT
|
||||
Content-Length: 0
|
||||
Set-Cookie: ____________%hex[%ff]hex%= ;%repeat[117 x %20]%%hex[%ff]hex%%repeat[2602 x %20]%%repeat[434 x z]%%hex[%86%85%85%80]hex%%repeat[49 x z]%%hex[%fa]hex%%repeat[540 x z]%%hex[%f3%a0%81%96]hex%zzzzzzzzzzzz~%repeat[82 x z]%%hex[%b6]hex%%repeat[364 x z]%
|
||||
Set-Cookie: %repeat[4000 x n]%=%repeat[4096 x v]%
|
||||
|
||||
</data>
|
||||
</reply>
|
||||
|
|
|
|||
|
|
@ -18,6 +18,8 @@ Server: test-server/fake%CR
|
|||
Content-Length: 4%CR
|
||||
Content-Type: text/html%CR
|
||||
Funny-head: yesyes%CR
|
||||
Set-Cookie:
|
||||
Set-Cookie: ;
|
||||
Set-Cookie: blankdomain=sure; domain=; path=/
|
||||
Set-Cookie: foobar=name; domain=anything.com; path=/ ; secure%CR
|
||||
Set-Cookie:ismatch=this ; domain=test31.curl; path=/silly/%CR
|
||||
|
|
@ -25,27 +27,27 @@ Set-Cookie:ISMATCH=this ; domain=test31.curl; path=/silly/%CR
|
|||
Set-Cookie: overwrite=this ; domain=test31.curl; path=/overwrite/%CR
|
||||
Set-Cookie: overwrite=this2 ; domain=test31.curl; path=/overwrite%CR
|
||||
Set-Cookie: sec1value=secure1 ; domain=test31.curl; path=/secure1/ ; secure%CR
|
||||
Set-Cookie: sec2value=secure2 ; domain=test31.curl; path=/secure2/ ; secure=%CR
|
||||
Set-Cookie: sec3value=secure3 ; domain=test31.curl; path=/secure3/ ; secure=%CR
|
||||
Set-Cookie: sec4value=secure4 ; secure=; domain=test31.curl; path=/secure4/ ; %CR
|
||||
Set-Cookie: sec2value=secure2 ; domain=test31.curl; path=/secure2/ ; secure%CR
|
||||
Set-Cookie: sec3value=secure3 ; domain=test31.curl; path=/secure3/ ; secure%CR
|
||||
Set-Cookie: sec4value=secure4 ; secure; domain=test31.curl; path=/secure4/ ; %CR
|
||||
Set-Cookie: sec5value=secure5 ; secure; domain=test31.curl; path=/secure5/ ; %CR
|
||||
Set-Cookie: sec6value=secure6 ; secure ; domain=test31.curl; path=/secure6/ ; %CR
|
||||
Set-Cookie: sec7value=secure7 ; secure ; domain=test31.curl; path=/secure7/ ; %CR
|
||||
Set-Cookie: sec8value=secure8 ; secure= ; domain=test31.curl; path=/secure8/ ; %CR
|
||||
Set-Cookie: secure=very1 ; secure=; domain=test31.curl; path=/secure9/; %CR
|
||||
Set-Cookie: sec8value=secure8 ; secure ; domain=test31.curl; path=/secure8/ ; %CR
|
||||
Set-Cookie: secure=very1 ; secure; domain=test31.curl; path=/secure9/; %CR
|
||||
Set-Cookie: httpo1=value1 ; domain=test31.curl; path=/p1/; httponly%CR
|
||||
Set-Cookie: httpo2=value2 ; domain=test31.curl; path=/p2/; httponly=%CR
|
||||
Set-Cookie: httpo2=value2 ; domain=test31.curl; path=/p2/; httponly%CR
|
||||
Set-Cookie: httpo3=value3 ; httponly; domain=test31.curl; path=/p3/;%CR
|
||||
Set-Cookie: httpo4=value4 ; httponly=; domain=test31.curl; path=/p4/; %CR
|
||||
Set-Cookie: httpo4=value4 ; httponly; domain=test31.curl; path=/p4/; %CR
|
||||
Set-Cookie: httponly=myvalue1 ; domain=test31.curl; path=/p4/; httponly%CR
|
||||
Set-Cookie: httpandsec=myvalue2 ; domain=test31.curl; path=/p4/; httponly; secure%CR
|
||||
Set-Cookie: httpandsec2=myvalue3; domain=test31.curl; path=/p4/; httponly=; secure%CR
|
||||
Set-Cookie: httpandsec3=myvalue4 ; domain=test31.curl; path=/p4/; httponly; secure=%CR
|
||||
Set-Cookie: httpandsec4=myvalue5 ; domain=test31.curl; path=/p4/; httponly=; secure=%CR
|
||||
Set-Cookie: httpandsec5=myvalue6 ; domain=test31.curl; path=/p4/; secure; httponly=%CR
|
||||
Set-Cookie: httpandsec6=myvalue7 ; domain=test31.curl; path=/p4/; secure=; httponly=%CR
|
||||
Set-Cookie: httpandsec2=myvalue3; domain=test31.curl; path=/p4/; httponly; secure%CR
|
||||
Set-Cookie: httpandsec3=myvalue4 ; domain=test31.curl; path=/p4/; httponly; secure%CR
|
||||
Set-Cookie: httpandsec4=myvalue5 ; domain=test31.curl; path=/p4/; httponly; secure%CR
|
||||
Set-Cookie: httpandsec5=myvalue6 ; domain=test31.curl; path=/p4/; secure; httponly%CR
|
||||
Set-Cookie: httpandsec6=myvalue7 ; domain=test31.curl; path=/p4/; secure; httponly%CR
|
||||
Set-Cookie: httpandsec7=myvalue8 ; domain=test31.curl; path=/p4/; secure; httponly%CR
|
||||
Set-Cookie: httpandsec8=myvalue9; domain=test31.curl; path=/p4/; secure=; httponly%CR
|
||||
Set-Cookie: httpandsec8=myvalue9; domain=test31.curl; path=/p4/; secure; httponly%CR
|
||||
Set-Cookie: partmatch=present; domain=test31.curl ; path=/;%CR
|
||||
Set-Cookie:eat=this; domain=moo.foo.moo;%CR
|
||||
Set-Cookie: eat=this-too; domain=.foo.moo;%CR
|
||||
|
|
@ -67,7 +69,7 @@ Set-Cookie: partialip=nono; domain=.0.0.1;%CR
|
|||
Set-Cookie: withspaces= yes within and around ;%CR
|
||||
Set-Cookie: withspaces2 =before equals;%CR
|
||||
Set-Cookie: prespace= yes before;%CR
|
||||
Set-Cookie: securewithspace=after ; secure =%CR
|
||||
Set-Cookie: securewithspace=after ; secure %CR
|
||||
Set-Cookie: %hex[%c3%82%c2%b3%c3%83%5c%78%39%32%c3%83%5c%78%39%61%c3%83%5c%78%38%64%c3%83%5c%78%39%37]hex%=%96%A6g%9Ay%B0%A5g%A7tm%7C%95%9A
|
||||
%CR
|
||||
boo
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue