diff options
author | asanka@chromium.org <asanka@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-05-12 19:32:44 +0000 |
---|---|---|
committer | asanka@chromium.org <asanka@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-05-12 19:32:44 +0000 |
commit | 8abf6e14ad39ee520c36f076939fe6e0b051539e (patch) | |
tree | 74ec6393275fa88ef056e7c57ce84c24869929a5 /net | |
parent | d5e46d41e8b07530644416226659790a7200253e (diff) | |
download | chromium_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.cc | 7 | ||||
-rw-r--r-- | net/base/net_util_unittest.cc | 15 |
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", "", |