From fa331d8b98e5dc66e0fd32ef257a09a2dae4fd9b Mon Sep 17 00:00:00 2001 From: Julian Stecklina Date: Wed, 23 Nov 2022 17:57:23 +0100 Subject: [PATCH] Fix section extraction --- rust/lanzaboote/src/pe_section.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/rust/lanzaboote/src/pe_section.rs b/rust/lanzaboote/src/pe_section.rs index a3da64c..4b6d178 100644 --- a/rust/lanzaboote/src/pe_section.rs +++ b/rust/lanzaboote/src/pe_section.rs @@ -10,7 +10,9 @@ pub fn pe_section<'a>(file_data: &'a [u8], section_name: &str) -> Option<&'a [u8 .find(|s| s.name().unwrap() == section_name) .and_then(|s| { let section_start: usize = s.pointer_to_raw_data.try_into().ok()?; - let section_end: usize = section_start + usize::try_from(s.size_of_raw_data).ok()?; + + assert!(s.virtual_size <= s.size_of_raw_data); + let section_end: usize = section_start + usize::try_from(s.virtual_size).ok()?; Some(&file_data[section_start..section_end]) })