From a6f59e50250c816f8bdf6c1b2ffebc4f82a5dc0e Mon Sep 17 00:00:00 2001 From: Mazdak Farrokhzad Date: Tue, 1 Oct 2024 22:03:51 +0200 Subject: [PATCH 1/2] fix IOB due to index_to_range --- crates/client-api-messages/src/websocket.rs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/crates/client-api-messages/src/websocket.rs b/crates/client-api-messages/src/websocket.rs index 7ff938e7ea..605bd588f9 100644 --- a/crates/client-api-messages/src/websocket.rs +++ b/crates/client-api-messages/src/websocket.rs @@ -605,7 +605,12 @@ impl> RowSizeHint { match self { Self::FixedSize(size) => { let size = *size as usize; - Some(index * size..(index + 1) * size) + let start = index * size; + if start >= data_end { + return None; + } + let end = (index + 1) * size; + Some(start..end) } Self::RowOffsets(offsets) => { let offsets = offsets.as_ref(); From afe85dc3b93e5f3353e365c93f390719211992b2 Mon Sep 17 00:00:00 2001 From: Mazdak Farrokhzad Date: Tue, 1 Oct 2024 22:06:02 +0200 Subject: [PATCH 2/2] add a comment in index_to_range --- crates/client-api-messages/src/websocket.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/crates/client-api-messages/src/websocket.rs b/crates/client-api-messages/src/websocket.rs index 605bd588f9..33cbcd5c49 100644 --- a/crates/client-api-messages/src/websocket.rs +++ b/crates/client-api-messages/src/websocket.rs @@ -607,6 +607,8 @@ impl> RowSizeHint { let size = *size as usize; let start = index * size; if start >= data_end { + // We've reached beyond `data_end`, + // so this is a row that doesn't exist, so we are beyond the count. return None; } let end = (index + 1) * size;