diff options
-rw-r--r-- | base/md5.cc | 14 | ||||
-rw-r--r-- | base/md5.h | 13 | ||||
-rw-r--r-- | base/md5_unittest.cc | 18 | ||||
-rw-r--r-- | chrome/browser/bookmarks/bookmark_codec.cc | 7 | ||||
-rw-r--r-- | chrome/browser/metrics/metrics_service.cc | 4 | ||||
-rw-r--r-- | chrome/browser/safe_browsing/prefix_set.cc | 23 | ||||
-rw-r--r-- | chrome/browser/safe_browsing/prefix_set_unittest.cc | 2 | ||||
-rw-r--r-- | chrome/browser/safe_browsing/safe_browsing_store_file.cc | 14 | ||||
-rw-r--r-- | chrome/browser/sync/util/user_settings.cc | 8 | ||||
-rw-r--r-- | chrome/common/metrics_helpers.cc | 2 | ||||
-rw-r--r-- | chrome/common/visitedlink_common.cc | 5 | ||||
-rw-r--r-- | media/test/ffmpeg_tests/ffmpeg_tests.cc | 15 | ||||
-rw-r--r-- | media/tools/media_bench/media_bench.cc | 14 | ||||
-rw-r--r-- | net/http/http_vary_data.cc | 2 |
14 files changed, 97 insertions, 44 deletions
diff --git a/base/md5.cc b/base/md5.cc index 2211a28..754994c 100644 --- a/base/md5.cc +++ b/base/md5.cc @@ -1,5 +1,8 @@ +// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + // The original file was copied from sqlite, and was in the public domain. -// Modifications Copyright 2006 Google Inc. All Rights Reserved /* * This code implements the MD5 message-digest algorithm. @@ -164,7 +167,9 @@ void MD5Init(MD5Context* context) { * Update context to reflect the concatenation of another buffer full * of bytes. */ -void MD5Update(MD5Context* context, const void* inbuf, size_t len) { +void MD5Update(MD5Context* context, const StringPiece& data) { + const unsigned char* inbuf = (const unsigned char*)data.data(); + size_t len = data.size(); struct Context *ctx = (struct Context *)context; const unsigned char* buf = (const unsigned char*)inbuf; uint32 t; @@ -273,11 +278,12 @@ std::string MD5DigestToBase16(const MD5Digest& digest) { void MD5Sum(const void* data, size_t length, MD5Digest* digest) { MD5Context ctx; MD5Init(&ctx); - MD5Update(&ctx, static_cast<const unsigned char*>(data), length); + MD5Update(&ctx, + StringPiece(reinterpret_cast<const char*>(data), length)); MD5Final(digest, &ctx); } -std::string MD5String(const std::string& str) { +std::string MD5String(const StringPiece& str) { MD5Digest digest; MD5Sum(str.data(), str.length(), &digest); return MD5DigestToBase16(digest); @@ -6,9 +6,8 @@ #define BASE_MD5_H_ #pragma once -#include <string> - #include "base/base_api.h" +#include "base/string_piece.h" namespace base { @@ -52,10 +51,10 @@ BASE_API void MD5Sum(const void* data, size_t length, MD5Digest* digest); // MD5Update(). BASE_API void MD5Init(MD5Context* context); -// For the given buffer of data, updates the given MD5 context with the sum of -// the data. You can call this any number of times during the computation, -// except that MD5Init() must have been called first. -BASE_API void MD5Update(MD5Context* context, const void* data, size_t length); +// For the given buffer of |data| as a StringPiece, updates the given MD5 +// context with the sum of the data. You can call this any number of times +// during the computation, except that MD5Init() must have been called first. +BASE_API void MD5Update(MD5Context* context, const StringPiece& data); // Finalizes the MD5 operation and fills the buffer with the digest. BASE_API void MD5Final(MD5Digest* digest, MD5Context* context); @@ -64,7 +63,7 @@ BASE_API void MD5Final(MD5Digest* digest, MD5Context* context); BASE_API std::string MD5DigestToBase16(const MD5Digest& digest); // Returns the MD5 (in hexadecimal) of a string. -BASE_API std::string MD5String(const std::string& str); +BASE_API std::string MD5String(const StringPiece& str); } // namespace base diff --git a/base/md5_unittest.cc b/base/md5_unittest.cc index c81ff12..a20d819 100644 --- a/base/md5_unittest.cc +++ b/base/md5_unittest.cc @@ -120,7 +120,8 @@ TEST(MD5, ContextWithLongData) { if (len > length - total) len = length - total; - MD5Update(&ctx, data.get() + total, len); + MD5Update(&ctx, + StringPiece(reinterpret_cast<char*>(data.get() + total), len)); total += len; } @@ -188,4 +189,19 @@ TEST(MD5, MD5StringTestSuite7) { EXPECT_EQ(expected, actual); } +TEST(MD5, ContextWithStringData) { + MD5Context ctx; + MD5Init(&ctx); + + MD5Update(&ctx, "abc"); + + MD5Digest digest; + MD5Final(&digest, &ctx); + + std::string actual = MD5DigestToBase16(digest); + std::string expected = "900150983cd24fb0d6963f7d28e17f72"; + + EXPECT_EQ(expected, actual); +} + } // namespace base diff --git a/chrome/browser/bookmarks/bookmark_codec.cc b/chrome/browser/bookmarks/bookmark_codec.cc index 548587d..dd0a576 100644 --- a/chrome/browser/bookmarks/bookmark_codec.cc +++ b/chrome/browser/bookmarks/bookmark_codec.cc @@ -338,11 +338,14 @@ void BookmarkCodec::ReassignIDsHelper(BookmarkNode* node) { } void BookmarkCodec::UpdateChecksum(const std::string& str) { - base::MD5Update(&md5_context_, str.data(), str.length() * sizeof(char)); + base::MD5Update(&md5_context_, str); } void BookmarkCodec::UpdateChecksum(const string16& str) { - base::MD5Update(&md5_context_, str.data(), str.length() * sizeof(char16)); + base::MD5Update(&md5_context_, + base::StringPiece( + reinterpret_cast<const char*>(str.data()), + str.length() * sizeof(str[0]))); } void BookmarkCodec::UpdateChecksumWithUrlNode(const std::string& id, diff --git a/chrome/browser/metrics/metrics_service.cc b/chrome/browser/metrics/metrics_service.cc index 45e228d..b3039d7 100644 --- a/chrome/browser/metrics/metrics_service.cc +++ b/chrome/browser/metrics/metrics_service.cc @@ -1134,7 +1134,7 @@ MetricsService::LogRecallStatus MetricsService::RecallUnsentLogsHelper( return MakeRecallStatusHistogram(LOG_STRING_CORRUPTION); } - base::MD5Update(&ctx, encoded_log.data(), encoded_log.length()); + base::MD5Update(&ctx, encoded_log); if (!base::Base64Decode(encoded_log, &decoded_log)) { local_list->clear(); @@ -1200,7 +1200,7 @@ void MetricsService::StoreUnsentLogsHelper( list->Clear(); return; } - base::MD5Update(&ctx, encoded_log.data(), encoded_log.length()); + base::MD5Update(&ctx, encoded_log); list->Append(Value::CreateStringValue(encoded_log)); } diff --git a/chrome/browser/safe_browsing/prefix_set.cc b/chrome/browser/safe_browsing/prefix_set.cc index 13890a0..9d568cb 100644 --- a/chrome/browser/safe_browsing/prefix_set.cc +++ b/chrome/browser/safe_browsing/prefix_set.cc @@ -192,7 +192,8 @@ PrefixSet* PrefixSet::LoadFile(const FilePath& filter_name) { // The file looks valid, start building the digest. base::MD5Context context; base::MD5Init(&context); - base::MD5Update(&context, &header, sizeof(header)); + base::MD5Update(&context, base::StringPiece(reinterpret_cast<char*>(&header), + sizeof(header))); // Read the index vector. Herb Sutter indicates that vectors are // guaranteed to be contiuguous, so reading to where element 0 lives @@ -201,14 +202,18 @@ PrefixSet* PrefixSet::LoadFile(const FilePath& filter_name) { read = fread(&(index[0]), sizeof(index[0]), index.size(), file.get()); if (read != index.size()) return NULL; - base::MD5Update(&context, &(index[0]), index_bytes); + base::MD5Update(&context, + base::StringPiece(reinterpret_cast<char*>(&(index[0])), + index_bytes)); // Read vector of deltas. deltas.resize(header.deltas_size); read = fread(&(deltas[0]), sizeof(deltas[0]), deltas.size(), file.get()); if (read != deltas.size()) return NULL; - base::MD5Update(&context, &(deltas[0]), deltas_bytes); + base::MD5Update(&context, + base::StringPiece(reinterpret_cast<char*>(&(deltas[0])), + deltas_bytes)); base::MD5Digest calculated_digest; base::MD5Final(&calculated_digest, &context); @@ -251,7 +256,8 @@ bool PrefixSet::WriteFile(const FilePath& filter_name) const { size_t written = fwrite(&header, sizeof(header), 1, file.get()); if (written != 1) return false; - base::MD5Update(&context, &header, sizeof(header)); + base::MD5Update(&context, base::StringPiece(reinterpret_cast<char*>(&header), + sizeof(header))); // As for reads, the standard guarantees the ability to access the // contents of the vector by a pointer to an element. @@ -259,14 +265,19 @@ bool PrefixSet::WriteFile(const FilePath& filter_name) const { written = fwrite(&(index_[0]), sizeof(index_[0]), index_.size(), file.get()); if (written != index_.size()) return false; - base::MD5Update(&context, &(index_[0]), index_bytes); + base::MD5Update(&context, + base::StringPiece(reinterpret_cast<const char*>(&(index_[0])), + index_bytes)); const size_t deltas_bytes = sizeof(deltas_[0]) * deltas_.size(); written = fwrite(&(deltas_[0]), sizeof(deltas_[0]), deltas_.size(), file.get()); if (written != deltas_.size()) return false; - base::MD5Update(&context, &(deltas_[0]), deltas_bytes); + base::MD5Update(&context, + base::StringPiece( + reinterpret_cast<const char*>(&(deltas_[0])), + deltas_bytes)); base::MD5Digest digest; base::MD5Final(&digest, &context); diff --git a/chrome/browser/safe_browsing/prefix_set_unittest.cc b/chrome/browser/safe_browsing/prefix_set_unittest.cc index 22d26d8..1ee2dac 100644 --- a/chrome/browser/safe_browsing/prefix_set_unittest.cc +++ b/chrome/browser/safe_browsing/prefix_set_unittest.cc @@ -113,7 +113,7 @@ class PrefixSetTest : public PlatformTest { char buf[1024]; size_t nitems = std::min(payload_size - digested_size, sizeof(buf)); ASSERT_EQ(nitems, fread(buf, 1, nitems, fp)); - base::MD5Update(&context, &buf, nitems); + base::MD5Update(&context, base::StringPiece(buf, nitems)); digested_size += nitems; } ASSERT_EQ(digested_size, payload_size); diff --git a/chrome/browser/safe_browsing/safe_browsing_store_file.cc b/chrome/browser/safe_browsing/safe_browsing_store_file.cc index 110fa54..af3e3df 100644 --- a/chrome/browser/safe_browsing/safe_browsing_store_file.cc +++ b/chrome/browser/safe_browsing/safe_browsing_store_file.cc @@ -58,8 +58,11 @@ bool ReadArray(T* ptr, size_t nmemb, FILE* fp, base::MD5Context* context) { if (ret != nmemb) return false; - if (context) - base::MD5Update(context, ptr, sizeof(T) * nmemb); + if (context) { + base::MD5Update(context, + base::StringPiece(reinterpret_cast<char*>(ptr), + sizeof(T) * nmemb)); + } return true; } @@ -73,8 +76,11 @@ bool WriteArray(const T* ptr, size_t nmemb, FILE* fp, if (ret != nmemb) return false; - if (context) - base::MD5Update(context, ptr, sizeof(T) * nmemb); + if (context) { + base::MD5Update(context, + base::StringPiece(reinterpret_cast<const char*>(ptr), + sizeof(T) * nmemb)); + } return true; } diff --git a/chrome/browser/sync/util/user_settings.cc b/chrome/browser/sync/util/user_settings.cc index df8ab6b..6ce150e 100644 --- a/chrome/browser/sync/util/user_settings.cc +++ b/chrome/browser/sync/util/user_settings.cc @@ -357,8 +357,8 @@ void UserSettings::StoreHashedPassword(const string& email, const string salt = APEncode(string(binary_salt, sizeof(binary_salt))); base::MD5Context md5_context; base::MD5Init(&md5_context); - base::MD5Update(&md5_context, salt.data(), salt.size()); - base::MD5Update(&md5_context, password.data(), password.size()); + base::MD5Update(&md5_context, salt); + base::MD5Update(&md5_context, password); base::MD5Digest md5_digest; base::MD5Final(&md5_digest, &md5_context); @@ -420,8 +420,8 @@ bool UserSettings::VerifyAgainstStoredHash(const string& email, return false; base::MD5Context md5_context; base::MD5Init(&md5_context); - base::MD5Update(&md5_context, salt.data(), salt.size()); - base::MD5Update(&md5_context, password.data(), password.size()); + base::MD5Update(&md5_context, salt); + base::MD5Update(&md5_context, password); base::MD5Digest md5_digest; base::MD5Final(&md5_digest, &md5_context); return hash == GetHashFromDigest(md5_digest); diff --git a/chrome/common/metrics_helpers.cc b/chrome/common/metrics_helpers.cc index c7aef5b..0441862 100644 --- a/chrome/common/metrics_helpers.cc +++ b/chrome/common/metrics_helpers.cc @@ -177,7 +177,7 @@ int MetricsLogBase::GetElapsedSeconds() { std::string MetricsLogBase::CreateHash(const std::string& value) { base::MD5Context ctx; base::MD5Init(&ctx); - base::MD5Update(&ctx, value.data(), value.length()); + base::MD5Update(&ctx, value); base::MD5Digest digest; base::MD5Final(&digest, &ctx); diff --git a/chrome/common/visitedlink_common.cc b/chrome/common/visitedlink_common.cc index 7fb254e..7c21054 100644 --- a/chrome/common/visitedlink_common.cc +++ b/chrome/common/visitedlink_common.cc @@ -81,8 +81,9 @@ VisitedLinkCommon::Fingerprint VisitedLinkCommon::ComputeURLFingerprint( base::MD5Context ctx; base::MD5Init(&ctx); - base::MD5Update(&ctx, salt, LINK_SALT_LENGTH * sizeof(uint8)); - base::MD5Update(&ctx, canonical_url, url_len * sizeof(char)); + base::MD5Update(&ctx, base::StringPiece(reinterpret_cast<const char*>(salt), + LINK_SALT_LENGTH)); + base::MD5Update(&ctx, base::StringPiece(canonical_url, url_len)); base::MD5Digest digest; base::MD5Final(&digest, &ctx); diff --git a/media/test/ffmpeg_tests/ffmpeg_tests.cc b/media/test/ffmpeg_tests/ffmpeg_tests.cc index 8c0bc7c..e91ca00 100644 --- a/media/test/ffmpeg_tests/ffmpeg_tests.cc +++ b/media/test/ffmpeg_tests/ffmpeg_tests.cc @@ -316,8 +316,12 @@ int main(int argc, const char** argv) { if (hash_djb2) { hash_value = DJB2Hash(u8_samples, size_out, hash_value); } - if (hash_md5) - base::MD5Update(&ctx, u8_samples, size_out); + if (hash_md5) { + base::MD5Update( + &ctx, + base::StringPiece( + reinterpret_cast<const char*>(u8_samples), size_out)); + } } } else if (target_codec == AVMEDIA_TYPE_VIDEO) { int got_picture = 0; @@ -377,8 +381,10 @@ int main(int argc, const char** argv) { } if (hash_md5) { for (size_t i = 0; i < copy_lines; ++i) { - base::MD5Update(&ctx, reinterpret_cast<const uint8*>(source), - bytes_per_line); + base::MD5Update( + &ctx, + base::StringPiece(reinterpret_cast<const char*>(source), + bytes_per_line)); source += source_stride; } } @@ -497,4 +503,3 @@ int main(int argc, const char** argv) { CommandLine::Reset(); return 0; } - diff --git a/media/tools/media_bench/media_bench.cc b/media/tools/media_bench/media_bench.cc index 1d3872a..66c3536e 100644 --- a/media/tools/media_bench/media_bench.cc +++ b/media/tools/media_bench/media_bench.cc @@ -426,8 +426,12 @@ int main(int argc, const char** argv) { if (hash_djb2) { hash_value = DJB2Hash(u8_samples, size_out, hash_value); } - if (hash_md5) - base::MD5Update(&ctx, u8_samples, size_out); + if (hash_md5) { + base::MD5Update( + &ctx, + base::StringPiece(reinterpret_cast<const char*>(u8_samples), + size_out)); + } } } else if (target_codec == AVMEDIA_TYPE_VIDEO) { int got_picture = 0; @@ -487,8 +491,10 @@ int main(int argc, const char** argv) { } if (hash_md5) { for (size_t i = 0; i < copy_lines; ++i) { - base::MD5Update(&ctx, reinterpret_cast<const uint8*>(source), - bytes_per_line); + base::MD5Update( + &ctx, + base::StringPiece(reinterpret_cast<const char*>(source), + bytes_per_line)); source += source_stride; } } diff --git a/net/http/http_vary_data.cc b/net/http/http_vary_data.cc index cb41a36..882dc78 100644 --- a/net/http/http_vary_data.cc +++ b/net/http/http_vary_data.cc @@ -120,7 +120,7 @@ void HttpVaryData::AddField(const HttpRequestInfo& request_info, // For example, "foo: 12\nbar: 3" looks like "foo: 1\nbar: 23" otherwise. request_value.append(1, '\n'); - base::MD5Update(ctx, request_value.data(), request_value.size()); + base::MD5Update(ctx, request_value); } } // namespace net |