GOAWAY frame contains a single stream ID varint. When decoding it,
ensure its length match the announced value in frame header. If not the
case, the connection must be closed with code FRAME_ERROR.
This must be backported up to 3.4.
return -1;
}
+ if (ret != len) {
+ TRACE_ERROR("mismatch on GOAWAY frame length", H3_EV_RX_FRAME, h3c->qcc->conn);
+ h3c->err = H3_ERR_FRAME_ERROR;
+ qcc_report_glitch(h3c->qcc, 1);
+ return -1;
+ }
+
if ((h3c->flags & H3_CF_GOAWAY_RECV) && id > h3c->id_shut_r) {
h3c->err = H3_ERR_ID_ERROR;
qcc_report_glitch(h3c->qcc, 1);