From 91e2a679b94febbf01c165ac23a008579d92e1cf Mon Sep 17 00:00:00 2001 From: Avinash Sajjanshetty Date: Thu, 18 Sep 2025 17:51:30 +0530 Subject: [PATCH] bugfix: clear reserved space for a reused page --- core/storage/btree.rs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/core/storage/btree.rs b/core/storage/btree.rs index 78b92fa80..9fa6488a6 100644 --- a/core/storage/btree.rs +++ b/core/storage/btree.rs @@ -6565,6 +6565,20 @@ pub fn btree_init_page(page: &PageRef, page_type: PageType, offset: usize, usabl contents.write_fragmented_bytes_count(0); contents.write_rightmost_ptr(0); + + #[cfg(debug_assertions)] + { + // we might get already used page from the pool. generally this is not a problem because + // b tree access is very controlled. However, for encrypted pages (and also checksums) we want + // to ensure that there are no reserved bytes that contain old data. + let buffer_len = contents.buffer.len(); + turso_assert!( + usable_space <= buffer_len, + "usable_space must be <= buffer_len" + ); + // this is no op if usable_space == buffer_len + contents.as_ptr()[usable_space..buffer_len].fill(0); + } } fn to_static_buf(buf: &mut [u8]) -> &'static mut [u8] {