diff options
author | cinap_lenrek <cinap_lenrek@rei2.9hal> | 2012-02-08 00:00:42 +0100 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@rei2.9hal> | 2012-02-08 00:00:42 +0100 |
commit | 022fd02b9632b0ca3ddd9547730446dd222ab93d (patch) | |
tree | ec2f051174546017bf0a7cdc88004728c083bf4c /sys/src/9/port/devenv.c | |
parent | d970ed6a5a243c2ec69857b69382b79eaaad1e87 (diff) |
fix endless devwalk loops caused by genbuf truncation
Diffstat (limited to 'sys/src/9/port/devenv.c')
-rw-r--r-- | sys/src/9/port/devenv.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/sys/src/9/port/devenv.c b/sys/src/9/port/devenv.c index e93a95139..0bb26dcf8 100644 --- a/sys/src/9/port/devenv.c +++ b/sys/src/9/port/devenv.c @@ -48,7 +48,7 @@ envgen(Chan *c, char *name, Dirtab*, int, int s, Dir *dp) else if(s < eg->nent) e = eg->ent[s]; - if(e == 0) { + if(e == 0 || (strlen(e->name) >= sizeof(up->genbuf))) { runlock(eg); return -1; } @@ -147,6 +147,9 @@ envcreate(Chan *c, char *name, int omode, ulong) if(c->qid.type != QTDIR) error(Eperm); + if(strlen(name) >= sizeof(up->genbuf)) + error(Egreg); + omode = openmode(omode); eg = envgrp(c); |