From 464f32cc3e1bbbad77f4bdd7a75967c0609a8efb Mon Sep 17 00:00:00 2001 From: Computer Network Investigation <121175071+JSCU-CNI@users.noreply.github.com> Date: Mon, 19 Feb 2024 20:19:32 +0100 Subject: [PATCH] Improve exception when reading out of bounds EWF segment (#21) --- dissect/evidence/ewf.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/dissect/evidence/ewf.py b/dissect/evidence/ewf.py index b7cf23e..7017d2e 100644 --- a/dissect/evidence/ewf.py +++ b/dissect/evidence/ewf.py @@ -228,7 +228,11 @@ def _read(self, offset: int, length: int) -> bytes: sector_count = (length + self.sector_size - 1) // self.sector_size segment_idx = bisect_right(self.ewf._segment_offsets, sector_offset) + while sector_count > 0: + if segment_idx > len(self.ewf._segment_offsets): + raise EWFError(f"Missing EWF file for segment index: {segment_idx}") + segment = self.ewf.open_segment(segment_idx) segment_remaining_sectors = segment.sector_count - (sector_offset - segment.sector_offset)