Validate request headers in H3Stream.
Override QuicSpdyServerStreamBase::ValidateReceivedHeaders() in H3Stream to
allow uppercase characters in header names. (CONNECT method is currently not
implemented.)
PiperOrigin-RevId: 574867858
diff --git a/quiche/http2/adapter/header_validator.cc b/quiche/http2/adapter/header_validator.cc
index 12e01eb..d091fde 100644
--- a/quiche/http2/adapter/header_validator.cc
+++ b/quiche/http2/adapter/header_validator.cc
@@ -74,12 +74,6 @@
return true;
}
-bool IsValidHeaderName(absl::string_view name) {
- static const CharMap valid_chars =
- BuildValidCharMap(kHttp2HeaderNameAllowedChars);
- return AllCharsInMap(name, valid_chars);
-}
-
bool IsValidStatus(absl::string_view status) {
static const CharMap valid_chars =
BuildValidCharMap(kHttp2StatusValueAllowedChars);
@@ -240,6 +234,12 @@
return false;
}
+bool HeaderValidator::IsValidHeaderName(absl::string_view name) {
+ static const CharMap valid_chars =
+ BuildValidCharMap(kHttp2HeaderNameAllowedChars);
+ return AllCharsInMap(name, valid_chars);
+}
+
bool HeaderValidator::IsValidHeaderValue(absl::string_view value,
ObsTextOption option) {
static const CharMap valid_chars =
diff --git a/quiche/http2/adapter/header_validator.h b/quiche/http2/adapter/header_validator.h
index e9ebc8d..f1c8497 100644
--- a/quiche/http2/adapter/header_validator.h
+++ b/quiche/http2/adapter/header_validator.h
@@ -26,8 +26,13 @@
// present for the given header type.
bool FinishHeaderBlock(HeaderType type) override;
- // Returns whether `value` is valid according to RFC 9110 Section 5.5 and RFC
- // 9112 Section 8.2.1.
+ // Returns whether `name` is valid according to RFC 9110 Section 5.1.
+ // ':' is an invalid character, therefore HTTP/2 pseudo-headers must be
+ // validated with the leading colon removed.
+ static bool IsValidHeaderName(absl::string_view name);
+
+ // Returns whether `value` is valid according to RFC 9110 Section 5.5 and
+ // RFC 9113 Section 8.2.1.
static bool IsValidHeaderValue(absl::string_view value,
ObsTextOption ops_text_option);