Disallow cookies with control chars.
BUG=238041
Review URL: https://chromiumcodereview.appspot.com/15542005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@224268 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/net/cookies/parsed_cookie_unittest.cc b/net/cookies/parsed_cookie_unittest.cc
index ad4aba6..23e3768a 100644
--- a/net/cookies/parsed_cookie_unittest.cc
+++ b/net/cookies/parsed_cookie_unittest.cc
@@ -422,4 +422,73 @@
EXPECT_EQ(COOKIE_PRIORITY_DEFAULT, pc.Priority());
}
-} // namespace net
+TEST(ParsedCookieTest, InvalidNonAlphanumericChars) {
+ ParsedCookie pc1("name=\x05");
+ ParsedCookie pc2("name=foo" "\x1c" "bar");
+ ParsedCookie pc3("name=foobar" "\x11");
+ ParsedCookie pc4("name=\x02" "foobar");
+
+ ParsedCookie pc5("\x05=value");
+ ParsedCookie pc6("foo" "\x05" "bar=value");
+ ParsedCookie pc7("foobar" "\x05" "=value");
+ ParsedCookie pc8("\x05" "foobar" "=value");
+
+ ParsedCookie pc9("foo" "\x05" "bar" "=foo" "\x05" "bar");
+
+ ParsedCookie pc10("foo=bar;ba" "\x05" "z=boo");
+ ParsedCookie pc11("foo=bar;baz=bo" "\x05" "o");
+ ParsedCookie pc12("foo=bar;ba" "\05" "z=bo" "\x05" "o");
+
+ EXPECT_FALSE(pc1.IsValid());
+ EXPECT_FALSE(pc2.IsValid());
+ EXPECT_FALSE(pc3.IsValid());
+ EXPECT_FALSE(pc4.IsValid());
+ EXPECT_FALSE(pc5.IsValid());
+ EXPECT_FALSE(pc6.IsValid());
+ EXPECT_FALSE(pc7.IsValid());
+ EXPECT_FALSE(pc8.IsValid());
+ EXPECT_FALSE(pc9.IsValid());
+ EXPECT_FALSE(pc10.IsValid());
+ EXPECT_FALSE(pc11.IsValid());
+ EXPECT_FALSE(pc12.IsValid());
+}
+
+TEST(ParsedCookieTest, ValidNonAlphanumericChars) {
+ // Note that some of these words are pasted backwords thanks to poor vim bidi
+ // support. This should not affect the tests, however.
+ const char* pc1_literal = "name=العربية";
+ const char* pc2_literal = "name=普通話";
+ const char* pc3_literal = "name=ภาษาไทย";
+ const char* pc4_literal = "name=עִבְרִית";
+ const char* pc5_literal = "العربية=value";
+ const char* pc6_literal = "普通話=value";
+ const char* pc7_literal = "ภาษาไทย=value";
+ const char* pc8_literal = "עִבְרִית=value";
+ ParsedCookie pc1(pc1_literal);
+ ParsedCookie pc2(pc2_literal);
+ ParsedCookie pc3(pc3_literal);
+ ParsedCookie pc4(pc4_literal);
+ ParsedCookie pc5(pc5_literal);
+ ParsedCookie pc6(pc6_literal);
+ ParsedCookie pc7(pc7_literal);
+ ParsedCookie pc8(pc8_literal);
+
+ EXPECT_TRUE(pc1.IsValid());
+ EXPECT_EQ(pc1_literal, pc1.ToCookieLine());
+ EXPECT_TRUE(pc2.IsValid());
+ EXPECT_EQ(pc2_literal, pc2.ToCookieLine());
+ EXPECT_TRUE(pc3.IsValid());
+ EXPECT_EQ(pc3_literal, pc3.ToCookieLine());
+ EXPECT_TRUE(pc4.IsValid());
+ EXPECT_EQ(pc4_literal, pc4.ToCookieLine());
+ EXPECT_TRUE(pc5.IsValid());
+ EXPECT_EQ(pc5_literal, pc5.ToCookieLine());
+ EXPECT_TRUE(pc6.IsValid());
+ EXPECT_EQ(pc6_literal, pc6.ToCookieLine());
+ EXPECT_TRUE(pc7.IsValid());
+ EXPECT_EQ(pc7_literal, pc7.ToCookieLine());
+ EXPECT_TRUE(pc8.IsValid());
+ EXPECT_EQ(pc8_literal, pc8.ToCookieLine());
+}
+
+}