forked from quic-go/quic-go
http3: reject pseudo header fields in trailers (#4639)
* http3: reject pseudo header fields in trailers As defined in section 4.3 of RFC 9114. * http3: improve allocs for trailer map * http3: rename connection.parseTrailer to decodeTrailers
This commit is contained in:
@@ -101,6 +101,17 @@ func parseHeaders(headers []qpack.HeaderField, isRequest bool) (header, error) {
|
||||
return hdr, nil
|
||||
}
|
||||
|
||||
func parseTrailers(headers []qpack.HeaderField) (http.Header, error) {
|
||||
h := make(http.Header, len(headers))
|
||||
for _, field := range headers {
|
||||
if field.IsPseudo() {
|
||||
return nil, fmt.Errorf("http3: received pseudo header in trailer: %s", field.Name)
|
||||
}
|
||||
h.Add(field.Name, field.Value)
|
||||
}
|
||||
return h, nil
|
||||
}
|
||||
|
||||
func requestFromHeaders(headerFields []qpack.HeaderField) (*http.Request, error) {
|
||||
hdr, err := parseHeaders(headerFields, true)
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user