Adds test coverage for the nul char appearing in header field names or values. PiperOrigin-RevId: 431725966
diff --git a/http2/adapter/header_validator_test.cc b/http2/adapter/header_validator_test.cc index 52148df..d1fd642 100644 --- a/http2/adapter/header_validator_test.cc +++ b/http2/adapter/header_validator_test.cc
@@ -60,6 +60,15 @@ v.ValidateSingleHeader(name, "value"); EXPECT_EQ(HeaderValidator::HEADER_FIELD_INVALID, status); } + // Test nul separately. + { + const absl::string_view name = is_pseudo_header + ? absl::string_view(":met\0hod", 8) + : absl::string_view("na\0me", 5); + HeaderValidator::HeaderStatus status = + v.ValidateSingleHeader(name, "value"); + EXPECT_EQ(HeaderValidator::HEADER_FIELD_INVALID, status); + } // Uppercase characters in header names should not be allowed. const std::string uc_name = is_pseudo_header ? ":Method" : "Name"; HeaderValidator::HeaderStatus status = @@ -83,6 +92,12 @@ v.ValidateSingleHeader("name", absl::StrCat("val", c, "ue")); EXPECT_EQ(HeaderValidator::HEADER_FIELD_INVALID, status); } + // Test nul separately. + { + HeaderValidator::HeaderStatus status = + v.ValidateSingleHeader("name", absl::string_view("val\0ue", 6)); + EXPECT_EQ(HeaderValidator::HEADER_FIELD_INVALID, status); + } } TEST(HeaderValidatorTest, StatusHasInvalidChar) {