diff options
author | Horms <horms@verge.net.au> | 2006-12-11 14:25:56 +0900 |
---|---|---|
committer | Simon Horman <horms@verge.net.au> | 2006-12-12 17:55:50 +0900 |
commit | 6675c146d462deccaaa1c7541aaebd58ce08295c (patch) | |
tree | 5059c6b0522460319d1260da685f26c3673b7ee9 | |
parent | 488598cad71dbb349058a6f3886bf010309018be (diff) |
kexec-tools: Make sure base and end do not overflow
Make sure that base and end do not overflow
Signed-off-by: Simon Horman <horms@verge.net.au>
Tested and working fine.
Acked-by: Sachin P. Sant <sachinp@in.ibm.com>
-rw-r--r-- | kexec/arch/ppc64/fs2dt.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/kexec/arch/ppc64/fs2dt.c b/kexec/arch/ppc64/fs2dt.c index a48cf23..7c07e19 100644 --- a/kexec/arch/ppc64/fs2dt.c +++ b/kexec/arch/ppc64/fs2dt.c @@ -134,8 +134,10 @@ static void add_usable_mem_property(int fd, int len) die("unrecoverable error: error reading \"%s\": %s\n", pathname, strerror(errno)); - base = ((unsigned long long *)buf)[0]; - end = base + ((unsigned long long *)buf)[1]; + if (~0ULL - buf[0] < buf[1]) + die("unrecoverable error: mem property overflow\n"); + base = buf[0]; + end = base + buf[1]; for (range = 0; range < usablemem_rgns.size; range++) { loc_base = usablemem_rgns.ranges[range].start; |