summaryrefslogtreecommitdiff
path: root/exec.c
diff options
context:
space:
mode:
authorRuss Cox <[email protected]>2009-08-08 01:07:30 -0700
committerRuss Cox <[email protected]>2009-08-08 01:07:30 -0700
commit0aef8914959af9e472852611eb6352c211093d35 (patch)
tree0658cf47dcb134b79e5311209c2a2840d1a79650 /exec.c
parentb3bebfce8a790975ba941d346e6bcff1b5afecf9 (diff)
downloadxv6-labs-0aef8914959af9e472852611eb6352c211093d35.tar.gz
xv6-labs-0aef8914959af9e472852611eb6352c211093d35.tar.bz2
xv6-labs-0aef8914959af9e472852611eb6352c211093d35.zip
shuffle and tweak for formatting.
pdf has very good page breaks now. would be a good copy for fall 2009.
Diffstat (limited to 'exec.c')
-rw-r--r--exec.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/exec.c b/exec.c
index 3be3eed..bee960e 100644
--- a/exec.c
+++ b/exec.c
@@ -11,7 +11,7 @@ exec(char *path, char **argv)
{
char *mem, *s, *last;
int i, argc, arglen, len, off;
- uint sz, sp, argp;
+ uint sz, sp, argp, x;
struct elfhdr elf;
struct inode *ip;
struct proghdr ph;
@@ -67,7 +67,9 @@ exec(char *path, char **argv)
goto bad;
if(ph.type != ELF_PROG_LOAD)
continue;
- if(ph.va + ph.memsz < ph.va || ph.va + ph.memsz > sz || ph.memsz < ph.filesz)
+ if(ph.va + ph.memsz < ph.va || ph.va + ph.memsz > sz)
+ goto bad;
+ if(ph.memsz < ph.filesz)
goto bad;
if(readi(ip, mem + ph.va, ph.offset, ph.filesz) != ph.filesz)
goto bad;