summaryrefslogtreecommitdiff
path: root/os/port/devenv.c
diff options
context:
space:
mode:
authorCharles.Forsyth <devnull@localhost>2007-01-23 09:36:04 +0000
committerCharles.Forsyth <devnull@localhost>2007-01-23 09:36:04 +0000
commit95028768b488f6878c9f26978d56aeb54fb5cf1e (patch)
treeb7ba04789e06dfa15a72fa59029c0c9fe6422d72 /os/port/devenv.c
parented8b7fd462e0202888a27ee1972409c52dec7d01 (diff)
check length in devenv.c
Diffstat (limited to 'os/port/devenv.c')
-rw-r--r--os/port/devenv.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/os/port/devenv.c b/os/port/devenv.c
index da6373a2..f58c0c74 100644
--- a/os/port/devenv.c
+++ b/os/port/devenv.c
@@ -179,12 +179,15 @@ static long
envwrite(Chan *c, void *a, long n, vlong offset)
{
char *s;
- int ve;
+ ulong ve;
Egrp *eg;
Evalue *e;
if(n <= 0)
return 0;
+ ve = offset+n;
+ if(ve > Maxenvsize)
+ error(Etoobig);
eg = up->env->egrp;
qlock(eg);
if(waserror()){
@@ -196,9 +199,6 @@ envwrite(Chan *c, void *a, long n, vlong offset)
break;
if(e == nil)
error(Enonexist);
- ve = offset+n;
- if(ve > Maxenvsize)
- error(Etoobig);
if(ve > e->len) {
s = smalloc(ve);
memmove(s, e->val, e->len);