1 #include "lib9.h" 2 #include "logfs.h" 3 #include "local.h" 4 5 int 6 logfsuserpermcheck(LogfsServer *s, Entry *e, Fid *f, ulong permmask) 7 { 8 if(s->openflags & LogfsOpenFlagNoPerm) 9 return 1; 10 if((e->perm & permmask) == permmask) 11 /* the whole world can do this */ 12 return 1; 13 if(((e->perm >> 6) & permmask) == permmask) { 14 /* maybe we're the owner */ 15 char *uname = logfsisfindnamefromid(s->is, e->uid); 16 if(uname == f->uname) 17 return 1; 18 } 19 if(((e->perm >> 3) & permmask) == permmask) { 20 /* maybe we're in the group */ 21 Group *g = logfsisfindgroupfromid(s->is, e->gid); 22 return g && logfsisgroupunameismember(s->is, g, f->uname); 23 } 24 return 0; 25 } 26