diff options
author | ellyjones@chromium.org <ellyjones@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-08-08 14:37:16 +0000 |
---|---|---|
committer | ellyjones@chromium.org <ellyjones@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-08-08 14:37:16 +0000 |
commit | 06949c461a7fe40cb0c8c1be8879edfa99861ab5 (patch) | |
tree | 1e71ac23757157d2860b6f10c795af48dc31a817 /net/http | |
parent | cb09cfd0f2d6d48c8e7094f1e3e30a9f158aac78 (diff) | |
download | chromium_src-06949c461a7fe40cb0c8c1be8879edfa99861ab5.zip chromium_src-06949c461a7fe40cb0c8c1be8879edfa99861ab5.tar.gz chromium_src-06949c461a7fe40cb0c8c1be8879edfa99861ab5.tar.bz2 |
Escape non-ASCII response headers.
Response headers that are not valid UTF-8 can't be stored in a
base::StringValue, which is always a UTF-8 string, so escape any non-ASCII
values to be safe. This prevents a DCHECK when dev tools' network request
inspector is open and we receive these headers.
BUG=299880
Review URL: https://codereview.chromium.org/453483002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@288357 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/http')
-rw-r--r-- | net/http/http_response_headers.cc | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/net/http/http_response_headers.cc b/net/http/http_response_headers.cc index 6983669..3a9f7e0 100644 --- a/net/http/http_response_headers.cc +++ b/net/http/http_response_headers.cc @@ -1355,9 +1355,12 @@ base::Value* HttpResponseHeaders::NetLogCallback( std::string value; while (EnumerateHeaderLines(&iterator, &name, &value)) { std::string log_value = ElideHeaderValueForNetLog(log_level, name, value); + std::string escaped_name = EscapeNonASCII(name); + std::string escaped_value = EscapeNonASCII(log_value); headers->Append( new base::StringValue( - base::StringPrintf("%s: %s", name.c_str(), log_value.c_str()))); + base::StringPrintf("%s: %s", escaped_name.c_str(), + escaped_value.c_str()))); } dict->Set("headers", headers); return dict; |