Index: base/hash.h |
diff --git a/base/hash.h b/base/hash.h |
index cf8ea3a26e49475a9187d7005cc17b0f470609f6..366165280739e9cf970c441a78e4403b0f21f190 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 |
-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 |
+// 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 > 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()); |
Matt Giuca
2014/02/27 05:25:29
I fixed the static_cast here too (by calling throu
|
} |
} // namespace base |