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..7268f148e7522b8e6909f1d9f2bbb4028b61da38 100644 |
--- a/chrome/browser/ssl/ssl_error_classification.cc |
+++ b/chrome/browser/ssl/ssl_error_classification.cc |
@@ -324,33 +324,44 @@ 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]))) { |
- result = result || false; |
+ 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/18 20:19:05
Nit: Unnecessary parens around IsHostNameKnownTLD.
Bhanu Dev
2015/08/18 21:34:31
Done.
|
+ 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 = dns_names[i]; |
+ 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 = dns_names[i]; |
+ 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 { |