mirror of
https://git.codelinaro.org/clo/qsdk/oss/boot/u-boot-2016.git
synced 2026-03-06 17:30:35 +01:00
Merge remote-tracking branch origin/win.coretech.1.0 into HEAD
Change-Id: Ideb195d3ecede2876c64a52dc1713f04647acfba
This commit is contained in:
commit
fea2fde8f1
1 changed files with 13 additions and 4 deletions
|
|
@ -18,6 +18,9 @@
|
|||
|
||||
int fdt_check_header(const void *fdt)
|
||||
{
|
||||
uintptr_t fdt_start, fdt_end;
|
||||
fdt_start = (uintptr_t)fdt;
|
||||
|
||||
if (fdt_magic(fdt) == FDT_MAGIC) {
|
||||
/* Complete tree */
|
||||
if (fdt_version(fdt) < FDT_FIRST_SUPPORTED_VERSION)
|
||||
|
|
@ -32,16 +35,22 @@ int fdt_check_header(const void *fdt)
|
|||
return -FDT_ERR_BADMAGIC;
|
||||
}
|
||||
|
||||
if (fdt_off_dt_struct(fdt) > (UINT_MAX - fdt_size_dt_struct(fdt)))
|
||||
if(fdt_start + fdt_totalsize(fdt) < fdt_start)
|
||||
{
|
||||
return FDT_ERR_BADOFFSET;
|
||||
}
|
||||
fdt_end = fdt_start + fdt_totalsize(fdt);
|
||||
|
||||
if (((uint64_t)fdt_start + (uint64_t)fdt_off_dt_struct(fdt) + (uint64_t)fdt_size_dt_struct(fdt)) > UINT_MAX)
|
||||
return FDT_ERR_BADOFFSET;
|
||||
|
||||
if (fdt_off_dt_strings(fdt) > (UINT_MAX - fdt_size_dt_strings(fdt)))
|
||||
if ((fdt_start + fdt_off_dt_struct(fdt) + fdt_size_dt_struct(fdt)) > fdt_end)
|
||||
return FDT_ERR_BADOFFSET;
|
||||
|
||||
if ((fdt_off_dt_struct(fdt) + fdt_size_dt_struct(fdt)) > fdt_totalsize(fdt))
|
||||
if (((uint64_t)fdt_start + (uint64_t)fdt_off_dt_strings(fdt) + (uint64_t)fdt_size_dt_strings(fdt)) > UINT_MAX)
|
||||
return FDT_ERR_BADOFFSET;
|
||||
|
||||
if ((fdt_off_dt_strings(fdt) + fdt_size_dt_strings(fdt)) > fdt_totalsize(fdt))
|
||||
if ((fdt_start + fdt_off_dt_strings(fdt) + fdt_size_dt_strings(fdt)) > fdt_end)
|
||||
return FDT_ERR_BADOFFSET;
|
||||
|
||||
return 0;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue