From 9dba0d4b64c5f41e0b2a9b569c03f64813b6f39e Mon Sep 17 00:00:00 2001 From: sprites0 <199826320+sprites0@users.noreply.github.com> Date: Fri, 4 Jul 2025 14:52:14 -0400 Subject: [PATCH] fix: Prevent potentially unreliable reads --- bin/reth/src/block_ingest.rs | 15 +++++---------- crates/ethereum/evm/src/lib.rs | 13 ++++--------- 2 files changed, 9 insertions(+), 19 deletions(-) diff --git a/bin/reth/src/block_ingest.rs b/bin/reth/src/block_ingest.rs index 1961f3a7d..090d845e8 100644 --- a/bin/reth/src/block_ingest.rs +++ b/bin/reth/src/block_ingest.rs @@ -149,16 +149,11 @@ impl BlockIngest { let f = ((height - 1) / 1_000_000) * 1_000_000; let s = ((height - 1) / 1_000) * 1_000; let path = format!("{}/{f}/{s}/{height}.rmp.lz4", self.ingest_dir.to_string_lossy()); - if std::path::Path::new(&path).exists() { - let file = std::fs::File::open(path).unwrap(); - let file = std::io::BufReader::new(file); - let mut decoder = lz4_flex::frame::FrameDecoder::new(file); - let blocks: Vec = rmp_serde::from_read(&mut decoder).unwrap(); - info!("Returning s3 synced block for @ Height [{height}]"); - Some(blocks[0].clone()) - } else { - None - } + let file = std::fs::read(path).ok()?; + let mut decoder = lz4_flex::frame::FrameDecoder::new(&file[..]); + let blocks: Vec = rmp_serde::from_read(&mut decoder).unwrap(); + info!("Returning s3 synced block for @ Height [{height}]"); + Some(blocks[0].clone()) } async fn try_collect_local_block(&self, height: u64) -> Option { diff --git a/crates/ethereum/evm/src/lib.rs b/crates/ethereum/evm/src/lib.rs index 2881a61d2..5003c6674 100644 --- a/crates/ethereum/evm/src/lib.rs +++ b/crates/ethereum/evm/src/lib.rs @@ -218,15 +218,10 @@ pub(crate) fn collect_s3_block(ingest_path: PathBuf, height: u64) -> Option = rmp_serde::from_read(&mut decoder).unwrap(); - Some(blocks[0].clone()) - } else { - None - } + let file = std::fs::read(path).ok()?; + let mut decoder = lz4_flex::frame::FrameDecoder::new(&file[..]); + let blocks: Vec = rmp_serde::from_read(&mut decoder).unwrap(); + Some(blocks[0].clone()) } pub(crate) fn get_locally_sourced_precompiles_for_height(