summaryrefslogtreecommitdiff
path: root/exec.c
diff options
context:
space:
mode:
authorrsc <rsc>2009-05-31 02:11:27 +0000
committerrsc <rsc>2009-05-31 02:11:27 +0000
commit90bab90832d1f3863d8345bcc2a2e5f59c270af8 (patch)
tree06d3941b5f953dc6c798d0a745bc91ff3efb07ee /exec.c
parentf3685aa391431d5eafbc918e1d143dd731c64787 (diff)
downloadxv6-labs-90bab90832d1f3863d8345bcc2a2e5f59c270af8.tar.gz
xv6-labs-90bab90832d1f3863d8345bcc2a2e5f59c270af8.tar.bz2
xv6-labs-90bab90832d1f3863d8345bcc2a2e5f59c270af8.zip
exec sanity check
Diffstat (limited to 'exec.c')
-rw-r--r--exec.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/exec.c b/exec.c
index 98c5d4c..1c653de 100644
--- a/exec.c
+++ b/exec.c
@@ -62,7 +62,7 @@ exec(char *path, char **argv)
goto bad;
if(ph.type != ELF_PROG_LOAD)
continue;
- if(ph.va + ph.memsz > sz)
+ if(ph.va + ph.memsz < ph.va || ph.va + ph.memsz > sz || ph.memsz < ph.filesz)
goto bad;
if(readi(ip, mem + ph.va, ph.offset, ph.filesz) != ph.filesz)
goto bad;