From d7c7c7e4b37f764174c90939636880f80c8c8c8f Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Tue, 18 Jun 2013 22:09:40 +0200 Subject: devsrv, devshr: wstat permissions update permissions last in wstat so it will only get changed when there was no error. --- sys/src/9/port/devshr.c | 4 ++-- sys/src/9/port/devsrv.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) (limited to 'sys/src') 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(); -- cgit v1.2.3