QUIC CONFORMANCE: RFC 9000 s. 19.14: STREAMS_BLOCKED Frames

Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/21135)
This commit is contained in:
Hugo Landau 2023-06-06 16:25:11 +01:00 committed by Pauli
parent f084a8f761
commit f80e61b61f

View File

@ -835,6 +835,20 @@ static int depack_do_frame_streams_blocked(PACKET *pkt,
/* This frame makes the packet ACK eliciting */
ackm_data->is_ack_eliciting = 1;
if (max_data > (((uint64_t)1) << 60)) {
/*
* RFC 9000 s. 19.14: "This value cannot exceed 2**60, as it is not
* possible to encode stream IDs larger than 2**62 - 1. Receipt of a
* frame that encodes a larger stream ID MUST be treated as a connection
* error of type STREAM_LIMIT_ERROR or FRAME_ENCODING_ERROR."
*/
ossl_quic_channel_raise_protocol_error(ch,
QUIC_ERR_STREAM_LIMIT_ERROR,
frame_type,
"invalid stream count limit");
return 0;
}
/* No-op - informative/debugging frame. */
return 1;
}