| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "net/base/ssl_false_start_blacklist.h" | 5 #include "net/base/ssl_false_start_blacklist.h" |
| 6 | 6 |
| 7 namespace net { | 7 namespace net { |
| 8 | 8 |
| 9 // static | 9 // static |
| 10 bool SSLFalseStartBlacklist::IsMember(const char* host) { | 10 bool SSLFalseStartBlacklist::IsMember(const std::string& host) { |
| 11 const char* last_two_labels = LastTwoLabels(host); | 11 const std::string last_two_components(LastTwoComponents(host)); |
| 12 if (!last_two_labels) | 12 if (last_two_components.empty()) |
| 13 return false; | 13 return false; |
| 14 const unsigned bucket = Hash(last_two_labels) & (kBuckets - 1); | |
| 15 const uint32 start = kHashTable[bucket]; | |
| 16 const uint32 end = kHashTable[bucket + 1]; | |
| 17 const size_t len = strlen(host); | |
| 18 | 14 |
| 19 for (size_t i = start; i < end;) { | 15 const size_t bucket = Hash(last_two_components) & (kBuckets - 1); |
| 16 for (size_t i = kHashTable[bucket]; i < kHashTable[bucket + 1]; ) { |
| 20 const size_t blacklist_entry_len = static_cast<uint8>(kHashData[i]); | 17 const size_t blacklist_entry_len = static_cast<uint8>(kHashData[i]); |
| 21 if (len >= blacklist_entry_len && | 18 if (host.length() >= blacklist_entry_len && |
| 22 memcmp(&host[len - blacklist_entry_len], &kHashData[i + 1], | 19 !host.compare(host.length() - blacklist_entry_len, blacklist_entry_len, |
| 23 blacklist_entry_len) == 0 && | 20 &kHashData[i + 1], blacklist_entry_len) && |
| 24 (len == blacklist_entry_len || | 21 (host.length() == blacklist_entry_len || |
| 25 host[len - blacklist_entry_len - 1] == '.')) { | 22 host[host.length() - blacklist_entry_len - 1] == '.')) { |
| 26 return true; | 23 return true; |
| 27 } | 24 } |
| 28 i += blacklist_entry_len + 1; | 25 i += blacklist_entry_len + 1; |
| 29 } | 26 } |
| 30 | 27 |
| 31 return false; | 28 return false; |
| 32 } | 29 } |
| 33 | 30 |
| 34 } // namespace net | 31 } // namespace net |
| OLD | NEW |