mirror of
https://github.com/topjohnwu/Magisk.git
synced 2025-03-04 07:05:11 +00:00
Correctly handle truncated dtb
This commit is contained in:
parent
0399cde50a
commit
e55c413261
@ -1,10 +1,7 @@
|
||||
use std::{cell::UnsafeCell, process::exit};
|
||||
|
||||
use argh::FromArgs;
|
||||
use fdt::{
|
||||
node::{FdtNode, NodeProperty},
|
||||
Fdt,
|
||||
};
|
||||
use fdt::{node::{FdtNode, NodeProperty}, Fdt, FdtError};
|
||||
|
||||
use base::{
|
||||
libc::c_char, log_err, map_args, EarlyExitExt, LoggedResult, MappedFile, ResultExt, Utf8CStr,
|
||||
@ -171,14 +168,16 @@ fn for_each_fdt<F: FnMut(usize, Fdt) -> LoggedResult<()>>(
|
||||
if slice.len() < 40 {
|
||||
break;
|
||||
}
|
||||
let fdt = Fdt::new(slice)?;
|
||||
|
||||
let size = fdt.total_size();
|
||||
|
||||
if size > slice.len() {
|
||||
let fdt = match Fdt::new(slice) {
|
||||
Err(FdtError::BufferTooSmall) => {
|
||||
eprintln!("dtb.{:04} is truncated", dtb_num);
|
||||
break;
|
||||
}
|
||||
},
|
||||
Ok(fdt) => fdt,
|
||||
e => e?,
|
||||
};
|
||||
|
||||
let size = fdt.total_size();
|
||||
|
||||
f(dtb_num, fdt)?;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user