diff --git a/lib/cookie.c b/lib/cookie.c
index 99f2910632..91dc8d5fd0 100644
--- a/lib/cookie.c
+++ b/lib/cookie.c
@@ -759,10 +759,12 @@ static CURLcode parse_netscape(struct Cookie *co,
if(!co->name)
return CURLE_OUT_OF_MEMORY;
else {
- /* For Netscape file format cookies we check prefix on the name */
- if(curl_strnequal("__Secure-", co->name, 9))
+ /* For Netscape file format cookies we check prefix on the name.
+ These prefixes are matched case sensitively, same as on the
+ header path and as the 6265bis document specifies. */
+ if(!strncmp("__Secure-", co->name, 9))
co->prefix_secure = TRUE;
- else if(curl_strnequal("__Host-", co->name, 7))
+ else if(!strncmp("__Host-", co->name, 7))
co->prefix_host = TRUE;
}
break;
diff --git a/tests/data/test2311 b/tests/data/test2311
index 92453a75e3..91032b81d2 100644
--- a/tests/data/test2311
+++ b/tests/data/test2311
@@ -26,7 +26,7 @@ This server says moo
http
-Cookie from file with control octet in value is rejected
+Cookie from file: control octet rejected, prefixes matched case sensitively
http://example.fake/%TESTNUMBER -b %LOGDIR/injar%TESTNUMBER -x %HOSTIP:%HTTPPORT
@@ -34,6 +34,8 @@ http://example.fake/%TESTNUMBER -b %LOGDIR/injar%TESTNUMBER -x %HOSTIP:%HTTPPORT
example.fake FALSE / FALSE 0 clean good
example.fake FALSE / FALSE 0 bad %hex[ba%07d]hex%
+example.fake FALSE / FALSE 0 __secure-x yes
+example.fake FALSE / FALSE 0 __Secure-y no
cookies
@@ -49,7 +51,7 @@ Host: example.fake
User-Agent: curl/%VERSION
Accept: */*
Proxy-Connection: Keep-Alive
-Cookie: clean=good
+Cookie: __secure-x=yes; clean=good