is_offset_safe

Function is_offset_safe 

Source
pub fn is_offset_safe(
    available_data: usize,
    next_offset: usize,
    last_offset: Option<usize>,
) -> bool
Expand description

Validates data offsets to prevent out-of-bounds access and infinite loops while parsing file formats.

§Notes

  • next_offset must be within the bounds of available_data
  • previous_offset must be less than next_offset, or None

§Example

use binwalk::common::is_offset_safe;

let my_data: &[u8] = b"ABCD";
let available_data = my_data.len();

assert!(is_offset_safe(available_data, 0, None));
assert!(!is_offset_safe(available_data, 4, None));
assert!(is_offset_safe(available_data, 2, Some(1)));
assert!(!is_offset_safe(available_data, 2, Some(2)));
assert!(!is_offset_safe(available_data, 1, Some(2)));