diff options
Diffstat (limited to 'rust/examples')
| -rw-r--r-- | rust/examples/dwarf/dwarf_import/src/lib.rs | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/rust/examples/dwarf/dwarf_import/src/lib.rs b/rust/examples/dwarf/dwarf_import/src/lib.rs index 98153398..74f2065e 100644 --- a/rust/examples/dwarf/dwarf_import/src/lib.rs +++ b/rust/examples/dwarf/dwarf_import/src/lib.rs @@ -322,11 +322,15 @@ fn parse_eh_frame<R: Reader>( return Ok(cie_data_offsets); } - // Store CIE offset for FDE range - cie_data_offsets.insert( - fde.initial_address()..fde.initial_address()+fde.len(), - fde.cie().data_alignment_factor() - ); + if fde.initial_address().overflowing_add(fde.len()).1 { + warn!("FDE at offset {:?} exceeds bounds of memory space! {:#x} + length {:#x}", fde.offset(), fde.initial_address(), fde.len()); + } else { + // Store CIE offset for FDE range + cie_data_offsets.insert( + fde.initial_address()..fde.initial_address() + fde.len(), + fde.cie().data_alignment_factor(), + ); + } } } } |
