Chromium Code Reviews| Index: chrome/browser/ssl/ssl_error_classification.cc |
| diff --git a/chrome/browser/ssl/ssl_error_classification.cc b/chrome/browser/ssl/ssl_error_classification.cc |
| index 305b2bbb0f0910614d9a105db71c8590194353d2..e27e9ba217e5a0c6856e59a9bcb895bc86ddafc8 100644 |
| --- a/chrome/browser/ssl/ssl_error_classification.cc |
| +++ b/chrome/browser/ssl/ssl_error_classification.cc |
| @@ -324,33 +324,43 @@ Tokenize(const std::string& name) { |
| } |
| // We accept the inverse case for www for historical reasons. |
| -bool SSLErrorClassification::IsWWWSubDomainMatch() const { |
| - std::string host_name = request_url_.host(); |
| +bool SSLErrorClassification::GetWWWSubDomainMatch( |
| + const std::string& host_name, |
| + const std::vector<std::string>& dns_names, |
| + std::string* www_match_host_name) { |
| if (IsHostNameKnownTLD(host_name)) { |
| - std::vector<std::string> dns_names; |
| - cert_.GetDNSNames(&dns_names); |
| - bool result = false; |
| // Need to account for all possible domains given in the SSL certificate. |
| for (size_t i = 0; i < dns_names.size(); ++i) { |
| if (dns_names[i].empty() || dns_names[i].find('\0') != std::string::npos |
| || dns_names[i].length() == host_name.length() |
| || !(IsHostNameKnownTLD(dns_names[i]))) { |
|
davidben
2015/08/17 18:59:19
Existing code, but I believe we put the || at the
Bhanu Dev
2015/08/18 05:09:10
Done.
|
| - result = result || false; |
| + continue; |
| } else if (dns_names[i].length() > host_name.length()) { |
| - result = result || |
| - net::StripWWW(base::ASCIIToUTF16(dns_names[i])) == |
| - base::ASCIIToUTF16(host_name); |
| + if (net::StripWWW(base::ASCIIToUTF16(dns_names[i])) == |
| + base::ASCIIToUTF16(host_name)) { |
| + www_match_host_name->assign(dns_names[i].data(), dns_names[i].size()); |
|
davidben
2015/08/17 18:59:19
This can just be:
*www_match_host_name = dns_nam
Bhanu Dev
2015/08/18 05:09:10
Done.
|
| + return true; |
| + } |
| } else { |
| - result = result || |
| - net::StripWWW(base::ASCIIToUTF16(host_name)) == |
| - base::ASCIIToUTF16(dns_names[i]); |
| + if (net::StripWWW(base::ASCIIToUTF16(host_name)) == |
| + base::ASCIIToUTF16(dns_names[i])) { |
| + www_match_host_name->assign(dns_names[i].data(), dns_names[i].size()); |
|
davidben
2015/08/17 18:59:19
Ditto.
Bhanu Dev
2015/08/18 05:09:10
Done.
|
| + return true; |
| + } |
| } |
| } |
| - return result; |
| } |
| return false; |
| } |
| +bool SSLErrorClassification::IsWWWSubDomainMatch() const { |
| + const std::string& host_name = request_url_.host(); |
| + std::vector<std::string> dns_names; |
| + cert_.GetDNSNames(&dns_names); |
| + std::string www_host; |
| + return GetWWWSubDomainMatch(host_name, dns_names, &www_host); |
| +} |
| + |
| bool SSLErrorClassification::NameUnderAnyNames( |
| const Tokens& child, |
| const std::vector<Tokens>& potential_parents) const { |