diff --git a/sys/src/9/port/devshr.c b/sys/src/9/port/devshr.c index 03739a31d..faac78574 100644 --- a/sys/src/9/port/devshr.c +++ b/sys/src/9/port/devshr.c @@ -654,8 +654,6 @@ shrwstat(Chan *c, uchar *dp, int n) if(strcmp(ent->owner, up->user) && !iseve()) error(Eperm); - if(d.mode != ~0UL) - ent->perm = d.mode & 0777; if(d.name != nil && *d.name && strcmp(ent->name, d.name) != 0) { if(strchr(d.name, '/') != nil) error(Ebadchar); @@ -665,6 +663,8 @@ shrwstat(Chan *c, uchar *dp, int n) } if(d.uid != nil && *d.uid) kstrdup(&ent->owner, d.uid); + if(d.mode != ~0UL) + ent->perm = d.mode & 0777; switch(sch->level){ case Qcshr: diff --git a/sys/src/9/port/devsrv.c b/sys/src/9/port/devsrv.c index f6b8167dc..193fa6c8b 100644 --- a/sys/src/9/port/devsrv.c +++ b/sys/src/9/port/devsrv.c @@ -272,8 +272,6 @@ srvwstat(Chan *c, uchar *dp, int n) if(strcmp(sp->owner, up->user) != 0 && !iseve()) error(Eperm); - if(d.mode != ~0UL) - sp->perm = d.mode & 0777; if(d.name != nil && *d.name && strcmp(sp->name, d.name) != 0) { if(strchr(d.name, '/') != nil) error(Ebadchar); @@ -283,6 +281,8 @@ srvwstat(Chan *c, uchar *dp, int n) } if(d.uid != nil && *d.uid) kstrdup(&sp->owner, d.uid); + if(d.mode != ~0UL) + sp->perm = d.mode & 0777; qunlock(&srvlk); poperror();