MINOR: quic: protect QUIC specific bits

This commit is contained in:
Amaury Denoyelle 2025-02-19 14:53:14 +01:00
parent 4107fdb7be
commit c87799652a

View File

@ -1241,7 +1241,7 @@ int qc_parse_frm(struct quic_frame *frm, struct quic_rx_packet *pkt,
}
parser = qf_parser(frm->type);
if (!(parser->mask & (1U << pkt->type))) {
if (pkt && !(parser->mask & (1U << pkt->type))) {
TRACE_DEVEL("unauthorized frame", QUIC_EV_CONN_PRSFRM, qc, frm);
goto leave;
}
@ -1253,7 +1253,8 @@ int qc_parse_frm(struct quic_frame *frm, struct quic_rx_packet *pkt,
TRACE_PROTO("RX frm", QUIC_EV_CONN_PSTRM, qc, frm);
pkt->flags |= parser->flags;
if (pkt)
pkt->flags |= parser->flags;
ret = 1;
leave:
@ -1276,7 +1277,7 @@ int qc_build_frm(unsigned char **pos, const unsigned char *end,
TRACE_ENTER(QUIC_EV_CONN_BFRM, qc);
builder = qf_builder(frm->type);
if (!(builder->mask & (1U << pkt->type))) {
if (pkt && !(builder->mask & (1U << pkt->type))) {
/* XXX This it a bug to send an unauthorized frame with such a packet type XXX */
TRACE_ERROR("unauthorized frame", QUIC_EV_CONN_BFRM, qc, frm);
BUG_ON(!(builder->mask & (1U << pkt->type)));
@ -1293,7 +1294,8 @@ int qc_build_frm(unsigned char **pos, const unsigned char *end,
goto leave;
}
pkt->flags |= builder->flags;
if (pkt)
pkt->flags |= builder->flags;
*pos = p;
ret = 1;