(
data: &[u8],
offset: u32,
size: u32,
section_file_offset: Option<usize>,
)
| 201 | } |
| 202 | |
| 203 | fn slice_at( |
| 204 | data: &[u8], |
| 205 | offset: u32, |
| 206 | size: u32, |
| 207 | section_file_offset: Option<usize>, |
| 208 | ) -> Result<&[u8]> { |
| 209 | let size = size as usize; |
| 210 | if size == 0 { |
| 211 | ensure!( |
| 212 | resolve_offset(offset, data.len(), section_file_offset).is_some(), |
| 213 | "offset outside of .mdebug section" |
| 214 | ); |
| 215 | return Ok(&data[0..0]); |
| 216 | } |
| 217 | let Some(offset) = resolve_offset(offset, data.len(), section_file_offset) else { |
| 218 | bail!("offset outside of .mdebug section"); |
| 219 | }; |
| 220 | let end = offset.checked_add(size).context("range overflow")?; |
| 221 | ensure!(end <= data.len(), "range exceeds .mdebug size"); |
| 222 | Ok(&data[offset..end]) |
| 223 | } |
| 224 | |
| 225 | fn resolve_offset( |
| 226 | offset: u32, |
no test coverage detected