Fix seed data range calculations

Also removes assert if size == 0, since that case is now gracefully
handled.

BUG=chromium:1252351

Change-Id: I2c5d52a9373f34f377fda9f1689cca6096bc5e63
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/64920
Auto-Submit: Ryan Harrison <rharrison@chromium.org>
Reviewed-by: Antonio Maiorano <amaiorano@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: Ryan Harrison <rharrison@chromium.org>
Kokoro: Kokoro <noreply+kokoro@google.com>
This commit is contained in:
Ryan Harrison 2021-09-23 17:16:33 +00:00 committed by Tint LUCI CQ
parent 5e6d4577fd
commit 594e010cfb
1 changed files with 1 additions and 2 deletions

View File

@ -104,7 +104,6 @@ bool RandomGenerator::GetWeightedBool(uint32_t percentage) {
uint64_t RandomGenerator::CalculateSeed(const uint8_t* data, size_t size) { uint64_t RandomGenerator::CalculateSeed(const uint8_t* data, size_t size) {
assert(data != nullptr && "|data| must be !nullptr"); assert(data != nullptr && "|data| must be !nullptr");
assert(size > 0 && "|size| must be > 0");
// Number of bytes we want to skip at the start of data for the hash. // Number of bytes we want to skip at the start of data for the hash.
// Fewer bytes may be skipped when `size` is small. // Fewer bytes may be skipped when `size` is small.
@ -120,7 +119,7 @@ uint64_t RandomGenerator::CalculateSeed(const uint8_t* data, size_t size) {
std::min(kHashDesiredLeadingSkipBytes, std::min(kHashDesiredLeadingSkipBytes,
std::max<int64_t>(size_i64 - kHashDesiredMinBytes, 0)); std::max<int64_t>(size_i64 - kHashDesiredMinBytes, 0));
int64_t hash_end_i64 = int64_t hash_end_i64 =
std::max(hash_begin_i64 + kHashDesiredMaxBytes, size_i64); std::min(hash_begin_i64 + kHashDesiredMaxBytes, size_i64);
size_t hash_begin = static_cast<size_t>(hash_begin_i64); size_t hash_begin = static_cast<size_t>(hash_begin_i64);
size_t hash_size = static_cast<size_t>(hash_end_i64) - hash_begin; size_t hash_size = static_cast<size_t>(hash_end_i64) - hash_begin;
return HashBuffer(data + hash_begin, hash_size); return HashBuffer(data + hash_begin, hash_size);