Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1)

Side by Side Diff: net/websockets/websocket_extension_parser_test.cc

Issue 2344873002: WebSocketExtensionParser: reject top-bit-set characters (Closed)
Patch Set: Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "net/websockets/websocket_extension_parser.h" 5 #include "net/websockets/websocket_extension_parser.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "net/websockets/websocket_extension.h" 9 #include "net/websockets/websocket_extension.h"
10 #include "testing/gtest/include/gtest/gtest.h" 10 #include "testing/gtest/include/gtest/gtest.h"
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
124 "foo; bar=b\\z", // separator in parameter value 124 "foo; bar=b\\z", // separator in parameter value
125 "foo; bar=b?z", // separator in parameter value 125 "foo; bar=b?z", // separator in parameter value
126 "\"foo\"", // quoted extension name 126 "\"foo\"", // quoted extension name
127 "foo; \"bar\"", // quoted parameter name 127 "foo; \"bar\"", // quoted parameter name
128 "foo; bar=\"\a2\"", // control in quoted parameter value 128 "foo; bar=\"\a2\"", // control in quoted parameter value
129 "foo; bar=\"b@z\"", // separator in quoted parameter value 129 "foo; bar=\"b@z\"", // separator in quoted parameter value
130 "foo; bar=\"b\\\\z\"", // separator in quoted parameter value 130 "foo; bar=\"b\\\\z\"", // separator in quoted parameter value
131 "foo; bar=\"\"", // quoted empty parameter value 131 "foo; bar=\"\"", // quoted empty parameter value
132 "foo; bar=\"baz", // unterminated quoted string 132 "foo; bar=\"baz", // unterminated quoted string
133 "foo; bar=\"baz \"", // space in quoted string 133 "foo; bar=\"baz \"", // space in quoted string
134 "foo; bar baz", // mising '=' 134 "foo; bar baz", // missing '='
135 "foo; bar - baz", // '-' instead of '=' (note: "foo; bar-baz" is valid). 135 "foo; bar - baz", // '-' instead of '=' (note: "foo; bar-baz" is valid).
136 "foo; bar=\r\nbaz", // CRNL not followed by a space 136 "foo; bar=\r\nbaz", // CRNL not followed by a space
137 "foo; bar=\r\n baz", // CRNL followed by a space 137 "foo; bar=\r\n baz", // CRNL followed by a space
138 "f\xFFpp", // 8-bit character in extension name
139 "foo; b\xFFr=baz" // 8-bit character in parameter name
140 "foo; bar=b\xFF" // 8-bit character in parameter value
141 "foo; bar=\"b\xFF\"" // 8-bit character in quoted parameter value
142 "foo; bar=\"baz\\" // ends with backslash
138 }; 143 };
139 144
140 for (size_t i = 0; i < arraysize(patterns); ++i) { 145 for (size_t i = 0; i < arraysize(patterns); ++i) {
141 WebSocketExtensionParser parser; 146 WebSocketExtensionParser parser;
142 EXPECT_FALSE(parser.Parse(patterns[i])); 147 EXPECT_FALSE(parser.Parse(patterns[i]));
143 EXPECT_EQ(0U, parser.extensions().size()); 148 EXPECT_EQ(0U, parser.extensions().size());
144 } 149 }
145 } 150 }
146 151
147 TEST(WebSocketExtensionParserTest, QuotedParameterValue) { 152 TEST(WebSocketExtensionParserTest, QuotedParameterValue) {
148 WebSocketExtensionParser parser; 153 WebSocketExtensionParser parser;
149 WebSocketExtension expected("foo"); 154 WebSocketExtension expected("foo");
150 expected.Add(WebSocketExtension::Parameter("bar", "baz")); 155 expected.Add(WebSocketExtension::Parameter("bar", "baz"));
151 156
152 EXPECT_TRUE(parser.Parse("foo; bar = \"ba\\z\" ")); 157 EXPECT_TRUE(parser.Parse("foo; bar = \"ba\\z\" "));
153 158
154 ASSERT_EQ(1U, parser.extensions().size()); 159 ASSERT_EQ(1U, parser.extensions().size());
155 EXPECT_TRUE(expected.Equals(parser.extensions()[0])); 160 EXPECT_TRUE(expected.Equals(parser.extensions()[0]));
156 } 161 }
157 162
163 // This is a regression test for crbug.com/647156
164 TEST(WebSocketExtensionParserTest, InvalidToken) {
165 static const char kInvalidInput[] = "\304;\304!*777\377=\377\254\377";
166 WebSocketExtensionParser parser;
167 EXPECT_FALSE(parser.Parse(kInvalidInput));
168 }
169
158 } // namespace 170 } // namespace
159 171
160 } // namespace net 172 } // namespace net
OLDNEW
« net/websockets/websocket_extension_parser.cc ('K') | « net/websockets/websocket_extension_parser.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698