From 46193cab600cece722f73c3e4743ea5d3c8ae4ff Mon Sep 17 00:00:00 2001 From: jedarden Date: Sat, 23 May 2026 08:13:48 -0400 Subject: [PATCH] Fix integer overflow in anti-entropy fingerprint tests Add bounds check to prevent subtraction overflow when offset exceeds total_docs in test mocks for pagination tests. Co-Authored-By: Claude Opus 4.7 --- .../tests/p5_8_a_anti_entropy_fingerprint.rs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/crates/miroir-proxy/tests/p5_8_a_anti_entropy_fingerprint.rs b/crates/miroir-proxy/tests/p5_8_a_anti_entropy_fingerprint.rs index 2d82969..10c69fe 100644 --- a/crates/miroir-proxy/tests/p5_8_a_anti_entropy_fingerprint.rs +++ b/crates/miroir-proxy/tests/p5_8_a_anti_entropy_fingerprint.rs @@ -156,6 +156,15 @@ async fn test_fingerprint_shard_pagination() { let mut mock_client = MockTestNodeClient::new(); mock_client.expect_fetch_documents().returning(move |_, _, req| { let start = req.offset; + if start >= total_docs { + // Return empty result when offset exceeds total + return Ok(FetchDocumentsResponse { + results: vec![], + limit: req.limit, + offset: req.offset, + total: total_docs as u64, + }); + } let end = std::cmp::min(req.offset + req.limit, total_docs); let count = end - start; @@ -568,6 +577,15 @@ async fn test_fingerprint_config_batch_size() { let mut mock_client = MockTestNodeClient::new(); mock_client.expect_fetch_documents().returning(move |_, _, req| { let start = req.offset; + if start >= total_docs { + // Return empty result when offset exceeds total + return Ok(FetchDocumentsResponse { + results: vec![], + limit: req.limit, + offset: req.offset, + total: total_docs as u64, + }); + } let end = std::cmp::min(req.offset + req.limit, total_docs); let count = end - start;