summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHorms <horms@verge.net.au>2006-12-11 14:25:56 +0900
committerSimon Horman <horms@verge.net.au>2006-12-12 17:55:50 +0900
commit6675c146d462deccaaa1c7541aaebd58ce08295c (patch)
tree5059c6b0522460319d1260da685f26c3673b7ee9
parent488598cad71dbb349058a6f3886bf010309018be (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.c6
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;