Index: net/cookies/parsed_cookie.cc |
diff --git a/net/cookies/parsed_cookie.cc b/net/cookies/parsed_cookie.cc |
index 8d382152b32c7e12e2df45834521c4bb39c56111..a39ec84dab909e7036f0b40ec803020e2310327c 100644 |
--- a/net/cookies/parsed_cookie.cc |
+++ b/net/cookies/parsed_cookie.cc |
@@ -1,4 +1,3 @@ |
-// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
erikwright (departed)
2013/05/24 14:15:56
Was this removed intentionally?
jww
2013/05/24 17:56:33
Nope, not at all. Fixed.
On 2013/05/24 14:15:56, e
|
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
@@ -45,6 +44,7 @@ |
#include "net/cookies/parsed_cookie.h" |
#include "base/logging.h" |
+#include "base/metrics/histogram.h" |
#include "base/string_util.h" |
namespace { |
@@ -130,9 +130,12 @@ bool IsValidCookieValue(const std::string& value) { |
(*i >= 0x2D && *i <= 0x3A) || |
(*i >= 0x3C && *i <= 0x5B) || |
(*i >= 0x5D && *i <= 0x7E)); |
- if (!valid_octet) |
+ if (!valid_octet) { |
+ UMA_HISTOGRAM_BOOLEAN("Cookies.IsValidCookieValue", false); |
erikwright (departed)
2013/05/24 14:15:56
This will be called for changing the value but not
jww
2013/05/24 17:56:33
Done.
|
return false; |
+ } |
} |
+ UMA_HISTOGRAM_BOOLEAN("Cookies.IsValidCookieValue", true); |
return true; |
} |
@@ -140,9 +143,12 @@ bool IsValidCookieAttributeValue(const std::string& value) { |
// The greatest common denominator of cookie attribute values is |
// <any CHAR except CTLs or ";"> according to RFC 6265. |
for (std::string::const_iterator i = value.begin(); i != value.end(); ++i) { |
- if ((*i >= 0 && *i <= 31) || *i == ';') |
+ if ((*i >= 0 && *i <= 31) || *i == ';') { |
+ UMA_HISTOGRAM_BOOLEAN("Cookies.IsValidCookieAttributeValue", false); |
erikwright (departed)
2013/05/24 14:15:56
These metrics will be clouded because they cover b
jww
2013/05/24 17:56:33
The goal of this measurement is to get an overall
erikwright (departed)
2013/05/27 19:19:41
The key is checked with IsValidToken and the value
|
return false; |
+ } |
} |
+ UMA_HISTOGRAM_BOOLEAN("Cookies.IsValidCookieAttributeValue", true); |
return true; |
} |
@@ -157,7 +163,8 @@ ParsedCookie::ParsedCookie(const std::string& cookie_line) |
maxage_index_(0), |
secure_index_(0), |
httponly_index_(0), |
- priority_index_(0) { |
+ priority_index_(0), |
+ parsed_invalid_control_char_(false) { |
if (cookie_line.size() > kMaxCookieSize) { |
VLOG(1) << "Not parsing cookie, too large: " << cookie_line.size(); |
@@ -165,6 +172,8 @@ ParsedCookie::ParsedCookie(const std::string& cookie_line) |
} |
ParseTokenValuePairs(cookie_line); |
+ UMA_HISTOGRAM_BOOLEAN("Cookies.ParsedInvalidControlCharacter", |
+ parsed_invalid_control_char_); |
if (!pairs_.empty()) |
SetupAttributes(); |
} |
@@ -381,8 +390,14 @@ void ParsedCookie::ParseTokenValuePairs(const std::string& cookie_line) { |
// OK, now try to parse a value. |
std::string::const_iterator value_start, value_end; |
ParseValue(&it, end, &value_start, &value_end); |
+ |
+ std::string value(value_start, value_end); |
+ |
+ if (!IsValidCookieAttributeValue(value)) |
erikwright (departed)
2013/05/24 14:15:56
Why not just put this after the assignment to pair
erikwright (departed)
2013/05/24 14:15:56
Note that the call to IsValidCookieAttributeValue
jww
2013/05/24 17:56:33
Done.
jww
2013/05/24 17:56:33
See my other responses. We want to measure a coupl
|
+ parsed_invalid_control_char_ = true; |
erikwright (departed)
2013/05/24 14:15:56
I suggest converting this to a local boolean and d
palmer
2013/05/24 17:38:43
I'll second that.
jww
2013/05/24 17:56:33
Done.
jww
2013/05/24 17:56:33
Done.
|
+ |
// OK, we're finished with a Token/Value. |
- pair.second = std::string(value_start, value_end); |
+ pair.second = value; |
// From RFC2109: "Attributes (names) (attr) are case-insensitive." |
if (pair_num != 0) |