No public description PiperOrigin-RevId: 924870001
diff --git a/quiche/http2/hpack/huffman/hpack_huffman_encoder.cc b/quiche/http2/hpack/huffman/hpack_huffman_encoder.cc index df2960a..277254f 100644 --- a/quiche/http2/hpack/huffman/hpack_huffman_encoder.cc +++ b/quiche/http2/hpack/huffman/hpack_huffman_encoder.cc
@@ -4,19 +4,27 @@ #include "quiche/http2/hpack/huffman/hpack_huffman_encoder.h" +#include <cstddef> +#include <cstdint> +#include <limits> #include <string> +#include "absl/strings/string_view.h" #include "quiche/http2/hpack/huffman/huffman_spec_tables.h" #include "quiche/common/platform/api/quiche_logging.h" namespace http2 { size_t HuffmanSize(absl::string_view plain) { - size_t bits = 0; + uint64_t bits = 0; for (const uint8_t c : plain) { bits += HuffmanSpecTables::kCodeLengths[c]; } - return (bits + 7) / 8; + uint64_t result = (bits + 7) / 8; + if (result > std::numeric_limits<uint32_t>::max()) { + return plain.size(); + } + return result; } void HuffmanEncode(absl::string_view input, size_t encoded_size,