Skip to content

Commit 7f4aa28

Browse files
committed
expose ranges instead of pair of usize for IFD regions
Add helpers to get the IFD, BIOS and ME region, respectively. Signed-off-by: Daniel Maslowski <[email protected]>
1 parent 81e1d2b commit 7f4aa28

File tree

2 files changed

+21
-6
lines changed

2 files changed

+21
-6
lines changed

src/ifd.rs

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,10 @@
4444
// Lowercase helpers are provided through implementations.
4545
#![allow(non_snake_case)]
4646

47-
use std::fmt::{Debug, Display};
47+
use std::{
48+
fmt::{Debug, Display},
49+
ops::Range,
50+
};
4851

4952
use bitfield_struct::bitfield;
5053
use serde::{Deserialize, Serialize};
@@ -307,8 +310,8 @@ impl FlashRegion {
307310
self.limit() as usize * 4096 + 4095
308311
}
309312

310-
pub fn range(self) -> (usize, usize) {
311-
(self.ba(), self.la() + 1)
313+
pub fn range(self) -> Range<usize> {
314+
self.ba()..self.la() + 1
312315
}
313316
}
314317

@@ -336,6 +339,18 @@ pub struct Regions {
336339
pub flreg9: FlashRegion,
337340
}
338341

342+
impl Regions {
343+
pub fn ifd_range(&self) -> Range<usize> {
344+
self.flreg0.range()
345+
}
346+
pub fn bios_range(&self) -> Range<usize> {
347+
self.flreg1.range()
348+
}
349+
pub fn me_range(&self) -> Range<usize> {
350+
self.flreg2.range()
351+
}
352+
}
353+
339354
// NOTE: Regions have changed over processors generations.
340355
impl Display for Regions {
341356
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {

src/lib.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,10 @@ impl Firmware {
3737
let ifd = IFD::parse(&data);
3838
let me = match &ifd {
3939
Ok(ifd) => {
40-
let me_region = ifd.regions.flreg2.range();
41-
let (b, l) = me_region;
40+
let me_region = ifd.regions.me_range();
41+
let b = me_region.start;
4242
info!("ME region start @ {b:08x}");
43-
ME::parse(&data[b..l], b, debug)
43+
ME::parse(&data[me_region], b, debug)
4444
}
4545
Err(e) => {
4646
warn!("Not a full image: {e:?}");

0 commit comments

Comments
 (0)