xref: /plan9/sys/src/lib9p/uid.c (revision 7dd7cddf99dd7472612f1413b4da293630e6b1bc)
1 #include <u.h>
2 #include <libc.h>
3 #include <auth.h>
4 #include <fcall.h>
5 #include <thread.h>
6 #include <9p.h>
7 
8 /*
9  * simplistic permission checking.  assume that
10  * each user is the leader of her own group.
11  */
12 int
hasperm(File * f,char * uid,int p)13 hasperm(File *f, char *uid, int p)
14 {
15 	int m;
16 
17 	m = f->mode & 7;	/* other */
18 	if((p & m) == p)
19 		return 1;
20 
21 	if(strcmp(f->uid, uid) == 0) {
22 		m |= (f->mode>>6) & 7;
23 		if((p & m) == p)
24 			return 1;
25 	}
26 
27 	if(strcmp(f->gid, uid) == 0) {
28 		m |= (f->mode>>3) & 7;
29 		if((p & m) == p)
30 			return 1;
31 	}
32 
33 	return 0;
34 }
35