Change more page size panics to corrupt errors

This commit is contained in:
Jussi Saurio
2025-08-14 09:59:25 +03:00
parent 0c6d548402
commit c2e89f94f8
2 changed files with 13 additions and 10 deletions

View File

@@ -470,9 +470,10 @@ impl Database {
if let Some(shared_wal) = maybe_shared_wal {
let size_in_wal = shared_wal.page_size();
if size_in_wal != 0 {
return Ok(PageSize::new(size_in_wal).unwrap_or_else(|| {
panic!("invalid page size in WAL: {size_in_wal}");
}));
let Some(page_size) = PageSize::new(size_in_wal) else {
bail_corrupt_error!("invalid page size in WAL: {size_in_wal}");
};
return Ok(page_size);
}
}
if self.db_state.is_initialized() {
@@ -481,9 +482,10 @@ impl Database {
let Some(size) = requested_page_size else {
return Ok(PageSize::default());
};
Ok(PageSize::new(size as u32).unwrap_or_else(|| {
panic!("invalid requested page size: {size}");
}))
let Some(page_size) = PageSize::new(size as u32) else {
bail_corrupt_error!("invalid requested page size: {size}");
};
Ok(page_size)
}
}

View File

@@ -19,7 +19,7 @@ use crate::storage::sqlite3_ondisk::{
write_pages_vectored, PageSize, WAL_FRAME_HEADER_SIZE, WAL_HEADER_SIZE,
};
use crate::types::{IOCompletions, IOResult};
use crate::{turso_assert, Buffer, LimboError, Result};
use crate::{bail_corrupt_error, turso_assert, Buffer, LimboError, Result};
use crate::{Completion, Page};
use self::sqlite3_ondisk::{checksum_wal, PageContent, WAL_MAGIC_BE, WAL_MAGIC_LE};
@@ -956,9 +956,10 @@ impl Wal for WalFile {
db_size: u64,
page: &[u8],
) -> Result<()> {
self.ensure_header_if_needed(PageSize::new(page.len() as u32).unwrap_or_else(|| {
panic!("invalid page size: {}", page.len());
}))?;
let Some(page_size) = PageSize::new(page.len() as u32) else {
bail_corrupt_error!("invalid page size: {}", page.len());
};
self.ensure_header_if_needed(page_size)?;
tracing::debug!("write_raw_frame({})", frame_id);
if page.len() != self.page_size() as usize {
return Err(LimboError::InvalidArgument(format!(