diff --git a/src/h3.c b/src/h3.c index fac9846d9..68e302dfa 100644 --- a/src/h3.c +++ b/src/h3.c @@ -675,6 +675,15 @@ static ssize_t h3_headers_to_htx(struct qcs *qcs, const struct buffer *buf, len = -1; goto out; } + + if (!http_validate_scheme(list[hdr_idx].v)) { + TRACE_ERROR("invalid scheme pseudo-header", H3_EV_RX_FRAME|H3_EV_RX_HDR, qcs->qcc->conn, qcs); + h3s->err = H3_ERR_MESSAGE_ERROR; + qcc_report_glitch(h3c->qcc, 1); + len = -1; + goto out; + } + scheme = list[hdr_idx].v; } else if (isteq(list[hdr_idx].n, ist(":authority"))) {