Automated rollback of changelist 227019741. See https://crbug.com/921074 *** Reason for rollback *** It appears that the caller does not expect the method to return an error, which results in weird behavior on 32-bit platforms *** Original change description *** Avoid truncation error on 32 bit platforms. This is so that truncation warning can be turned into compiler errors for Blink on 32-bit Android platforms. See https://crbug.com/916990 for more context. gfe-relnote: No functional change on 64-bit platforms. Not flag protected. *** PiperOrigin-RevId: 229219479 Change-Id: Ie3ef2d518951894f4a1ee8a7b92478f3a946dfa9
diff --git a/http2/hpack/decoder/hpack_string_decoder.h b/http2/hpack/decoder/hpack_string_decoder.h index 5e0d220..8ec0169 100644 --- a/http2/hpack/decoder/hpack_string_decoder.h +++ b/http2/hpack/decoder/hpack_string_decoder.h
@@ -13,7 +13,6 @@ #include <algorithm> #include <cstdint> -#include <limits> #include "base/logging.h" #include "base/macros.h" @@ -169,16 +168,7 @@ // false otherwise, in which case status set. template <class Listener> void OnStringStart(Listener* cb, DecodeStatus* status) { - // HpackVarintDecoder::value() returns uint64_t. - const uint64_t value = length_decoder_.value(); - // |remaining_| is size_t. Check for truncation on 32-bit platforms. - // numeric_limits::max() is constexpr. On platforms where size_t is at - // least 64 bit wide, the compiler should optimize away this branch. - if (value > std::numeric_limits<size_t>::max()) { - *status = DecodeStatus::kDecodeError; - return; - } - remaining_ = static_cast<size_t>(value); + remaining_ = length_decoder_.value(); // Make callback so consumer knows what is coming. cb->OnStringStart(huffman_encoded_, remaining_); }