Stop processing QPACK Header Block Prefix if error is detected.
This fixes the crash https://crbug.com/970218 found by Clusterfuzz.
gfe-relnote: n/a, change in QUIC v99 only.
PiperOrigin-RevId: 253218848
Change-Id: I49c34deefc064bcfe3e6ff86c2975a577d4506f4
diff --git a/quic/core/qpack/qpack_decoder_test.cc b/quic/core/qpack/qpack_decoder_test.cc
index 9aa9d12..eabc7b9 100644
--- a/quic/core/qpack/qpack_decoder_test.cc
+++ b/quic/core/qpack/qpack_decoder_test.cc
@@ -551,6 +551,15 @@
DecodeHeaderBlock(QuicTextUtils::HexDecode("4100"));
}
+// Regression test for https://crbug.com/970218: Decoder must stop processing
+// after a Header Block Prefix with an invalid Encoded Required Insert Count.
+TEST_P(QpackDecoderTest, DataAfterInvalidEncodedRequiredInsertCount) {
+ EXPECT_CALL(handler_, OnDecodingErrorDetected(
+ Eq("Error decoding Required Insert Count.")));
+ // Header Block Prefix followed by some extra data.
+ DecodeHeaderBlock(QuicTextUtils::HexDecode("410000"));
+}
+
TEST_P(QpackDecoderTest, WrappedRequiredInsertCount) {
// Maximum dynamic table capacity is 1024.
// MaxEntries is 1024 / 32 = 32.