Chromium Code Reviews| Index: base/hash.h |
| diff --git a/base/hash.h b/base/hash.h |
| index cf8ea3a26e49475a9187d7005cc17b0f470609f6..0b9c9f6bf0cf272d712d4de2458d215daa1808bb 100644 |
| --- a/base/hash.h |
| +++ b/base/hash.h |
| @@ -5,25 +5,33 @@ |
| #ifndef BASE_HASH_H_ |
| #define BASE_HASH_H_ |
| +#include <limits> |
| #include <string> |
| #include "base/base_export.h" |
| #include "base/basictypes.h" |
| +#include "base/logging.h" |
| namespace base { |
| -// From http://www.azillionmonkeys.com/qed/hash.html |
| -// This is the hash used on WebCore/platform/stringhash |
|
Noel Gordon
2014/03/04 08:39:52
Late to this party, but why did the reference to t
Matt Giuca
2014/03/04 23:47:31
Ah, is that where it is. I did a brief search for
|
| -BASE_EXPORT uint32 SuperFastHash(const char * data, int len); |
| +// WARNING: This hash function should not be used for any cryptographic purpose. |
| +BASE_EXPORT uint32 SuperFastHash(const char* data, int len); |
| +// Computes the hash of a string |key| of a given |length|. |key| does not need |
|
Noel Gordon
2014/03/04 08:39:52
"hash of a string"? |key| does not appear to be a
Matt Giuca
2014/03/04 23:47:31
Yeah, all correct. I was just trying to be quite c
|
| +// to be null-terminated, and may contain null bytes. |
| +// WARNING: This hash function should not be used for any cryptographic purpose. |
| inline uint32 Hash(const char* key, size_t length) { |
| + if (length > static_cast<size_t>(std::numeric_limits<int>::max())) { |
| + NOTREACHED(); |
| + return 0; |
| + } |
| return SuperFastHash(key, static_cast<int>(length)); |
| } |
| +// Computes the hash of a string |key|. |
| +// WARNING: This hash function should not be used for any cryptographic purpose. |
| inline uint32 Hash(const std::string& key) { |
| - if (key.empty()) |
| - return 0; |
| - return SuperFastHash(key.data(), static_cast<int>(key.size())); |
| + return Hash(key.data(), key.size()); |
| } |
| } // namespace base |