summaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorasanka@chromium.org <asanka@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-05-12 19:32:44 +0000
committerasanka@chromium.org <asanka@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-05-12 19:32:44 +0000
commit8abf6e14ad39ee520c36f076939fe6e0b051539e (patch)
tree74ec6393275fa88ef056e7c57ce84c24869929a5 /net
parentd5e46d41e8b07530644416226659790a7200253e (diff)
downloadchromium_src-8abf6e14ad39ee520c36f076939fe6e0b051539e.zip
chromium_src-8abf6e14ad39ee520c36f076939fe6e0b051539e.tar.gz
chromium_src-8abf6e14ad39ee520c36f076939fe6e0b051539e.tar.bz2
Tolerate extra whitespace in header parameters
BUG=69939 TEST=net_unittests --gtest_filter=NetUtilTest.GetSuggestedFilename Review URL: http://codereview.chromium.org/7005003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@85164 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net')
-rw-r--r--net/base/net_util.cc7
-rw-r--r--net/base/net_util_unittest.cc15
2 files changed, 21 insertions, 1 deletions
diff --git a/net/base/net_util.cc b/net/base/net_util.cc
index 059184a..2e77acf 100644
--- a/net/base/net_util.cc
+++ b/net/base/net_util.cc
@@ -1084,7 +1084,12 @@ std::string GetHeaderParamValue(const std::string& header,
if (equals_offset == std::string::npos || header[equals_offset] != '=')
return std::string();
- param_begin = header.begin() + equals_offset + 1;
+ size_t param_value_offset =
+ header.find_first_not_of(whitespace, equals_offset + 1);
+ if (param_value_offset == std::string::npos)
+ return std::string();
+
+ param_begin = header.begin() + param_value_offset;
if (param_begin == header.end())
return std::string();
diff --git a/net/base/net_util_unittest.cc b/net/base/net_util_unittest.cc
index 2bac45b..ac0cdd9 100644
--- a/net/base/net_util_unittest.cc
+++ b/net/base/net_util_unittest.cc
@@ -1055,6 +1055,21 @@ TEST(NetUtilTest, GetSuggestedFilename) {
"",
L"",
L"test.html"},
+ {"http://www.google.com/",
+ "Content-disposition: attachment; filename= \"test.html\"",
+ "",
+ L"",
+ L"test.html"},
+ {"http://www.google.com/",
+ "Content-disposition: attachment; filename = \"test.html\"",
+ "",
+ L"",
+ L"test.html"},
+ {"http://www.google.com/",
+ "Content-disposition: attachment; filename= ",
+ "",
+ L"",
+ L"www.google.com"},
{"http://www.google.com/path/test.html",
"Content-disposition: attachment",
"",