Skip to content

Commit 23b06e6

Browse files
committed
implement extracting IFD and ME region
Signed-off-by: Daniel Maslowski <info@orangecms.org>
1 parent 7f4aa28 commit 23b06e6

File tree

1 file changed

+18
-6
lines changed

1 file changed

+18
-6
lines changed

src/main.rs

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -162,10 +162,10 @@ fn main() {
162162
debug!("Blocklist: {blocklist:?}");
163163
}
164164
debug!("");
165-
if let Some(descriptor_file) = extract_descriptor {
165+
if let Some(descriptor_file) = &extract_descriptor {
166166
info!("Dump flash descriptor to {descriptor_file}");
167167
}
168-
if let Some(me_file) = extract_me {
168+
if let Some(me_file) = &extract_me {
169169
info!("Dump ME region to {me_file}");
170170
}
171171
if let Some(out_file) = &output {
@@ -191,11 +191,23 @@ fn main() {
191191
};
192192
match clean::clean(&fw.ifd, &me, &mut data, opts) {
193193
Ok(data) => {
194-
if let Some(out_file) = output {
195-
let mut file = fs::File::create(out_file).unwrap();
196-
file.write_all(&data).unwrap();
194+
if let Some(f) = output {
195+
let mut f = fs::File::create(f).unwrap();
196+
f.write_all(&data).unwrap();
197197
} else {
198-
error!("Clean operation failed");
198+
error!("No output file given");
199+
}
200+
if let Ok(ifd) = &fw.ifd {
201+
if let Some(f) = extract_descriptor {
202+
let mut f = fs::File::create(f).unwrap();
203+
let ifd_range = ifd.regions.ifd_range();
204+
f.write_all(&data[ifd_range]).unwrap();
205+
}
206+
if let Some(f) = extract_me {
207+
let mut f = fs::File::create(f).unwrap();
208+
let me_range = ifd.regions.me_range();
209+
f.write_all(&data[me_range]).unwrap();
210+
}
199211
}
200212
}
201213
Err(e) => {

0 commit comments

Comments
 (0)