Skip to content

Commit 110a491

Browse files
authored
test(s2n-quic-dc): cap fuzz_test request size if that is too large (#2783)
1 parent bb92548 commit 110a491

File tree

1 file changed

+29
-1
lines changed

1 file changed

+29
-1
lines changed

dc/s2n-quic-dc/src/stream/tests/request_response.rs

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -425,6 +425,31 @@ impl Harness {
425425
}
426426
}
427427

428+
/// Cap request sizes that are too large compared to client or server max_read_len
429+
///
430+
/// This helper function caps request sizes to 100 times the minimum max_read_len
431+
/// of the client or server if they exceed this limit. This prevents timeouts that
432+
/// can occur when processing excessively large requests.
433+
fn cap_large_requests(
434+
client: &Client,
435+
server: &Server,
436+
mut requests: Vec<Request>,
437+
) -> Vec<Request> {
438+
let min_max_read_len = client.max_read_len.min(server.max_read_len);
439+
440+
// Set maximum request sizes to be 100 times the minimum of client or server max_read_len
441+
let max_request_size = min_max_read_len * 100;
442+
443+
// Cap request sizes to max_request_size if they exceed it
444+
for request in &mut requests {
445+
if request.request_size > max_request_size {
446+
request.request_size = max_request_size;
447+
}
448+
}
449+
450+
requests
451+
}
452+
428453
struct Runtime {
429454
rt: tokio::runtime::Runtime,
430455
client: testing::Client,
@@ -461,10 +486,13 @@ impl Runtime {
461486
}
462487

463488
fn run_with(&self, client: Client, server: Server, requests: Vec<Request>) {
489+
// Cap request sizes that are too large compared to client or server max_read_len
490+
let capped_requests = cap_large_requests(&client, &server, requests);
491+
464492
let harness = Harness {
465493
client,
466494
server,
467-
requests,
495+
requests: capped_requests,
468496
protocol: self.protocol,
469497
};
470498
let client = self.client.clone();

0 commit comments

Comments
 (0)