Fix an overflow case in fdt_offset_ptr() detected by GCC 4.3.
PATCH 2/3 Fix an overflow case in fdt_offset_ptr() detected by GCC 4.3.
Using Gcc 4.3 detected this problem:
../dtc/libfdt/fdt.c: In function 'fdt_next_tag':
../dtc/libfdt/fdt.c:82: error: assuming signed overflow does not occur when assuming that (X + c) < X is always false
To fix the problem, treat the offset as an unsigned int.
The problem report and proposed fix were provided
by Steve Papacharalambous <[email protected]>.
Signed-off-by Jon Loeliger <[email protected]>
--- include/libfdt.h | 2 +- libfdt/fdt.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)
include/libfdt.h +1 -1
@@ -122,7 +122,7 @@/* Low-level functions (you probably don't need these) */ /**********************************************************************/ -const void *fdt_offset_ptr (const void *fdt,int offset,int checklen); +const void *fdt_offset_ptr (const void *fdt,int offset,unsigned int checklen);static inline void *fdt_offset_ptr_w (void *fdt,int offset,int checklen) {return (void *)(uintptr_t )fdt_offset_ptr (fdt, offset, checklen);
libfdt/fdt.c +1 -1
@@ -78,7 +78,7 @@ int fdt_check_header(const void *fdt)return 0 ; } -const void *fdt_offset_ptr (const void *fdt,int offset,int len) +const void *fdt_offset_ptr (const void *fdt,int offset,unsigned int len) {const char *p;
Signature · 1 line
1.5.6.5
[U-Boot] s/3/2/ [PATCH 2/3]/ Fix an overflow case in fdt_offset_ptr() detected by GCC 4.3.
Sorry, that was suppose to be [PATCH 2/2].
gvb