summaryrefslogtreecommitdiff
path: root/sys/src/cmd/auth
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2016-12-22 21:55:56 +0100
committercinap_lenrek <cinap_lenrek@felloff.net>2016-12-22 21:55:56 +0100
commit3bf89ed825835b574c3d1c7f640918e65aac488d (patch)
tree233ccecda3f4de9c614f0d226d8a92db29f539ca /sys/src/cmd/auth
parent82bf19941ed8dc4626e8fb3c12b2f67d7d331093 (diff)
auth/as: simplify further
Diffstat (limited to 'sys/src/cmd/auth')
-rw-r--r--sys/src/cmd/auth/as.c23
1 files changed, 6 insertions, 17 deletions
diff --git a/sys/src/cmd/auth/as.c b/sys/src/cmd/auth/as.c
index 46450a293..5cba71b16 100644
--- a/sys/src/cmd/auth/as.c
+++ b/sys/src/cmd/auth/as.c
@@ -17,7 +17,6 @@ char *defargv[] = { "/bin/rc", "-i", nil };
char *namespace = nil;
int becomeuser(char*);
-void initcap(void);
void
usage(void)
@@ -56,7 +55,6 @@ main(int argc, char *argv[])
if(argc == 0)
usage();
- initcap();
if(becomeuser(argv[0]) < 0)
sysfatal("can't change uid for %s: %r", argv[0]);
if(newns(argv[0], namespace) < 0)
@@ -70,19 +68,6 @@ main(int argc, char *argv[])
}
/*
- * keep caphash fd open since opens of it could be disabled
- */
-static int caphashfd;
-
-void
-initcap(void)
-{
- caphashfd = open("#¤/caphash", OCEXEC|OWRITE);
- if(caphashfd < 0)
- fprint(2, "%s: opening #¤/caphash: %r", argv0);
-}
-
-/*
* create a change uid capability
*/
char*
@@ -93,8 +78,10 @@ mkcap(char *from, char *to)
char *key;
int nfrom, nto;
uchar hash[SHA1dlen];
+ int fd;
- if(caphashfd < 0)
+ fd = open("#¤/caphash", OCEXEC|OWRITE);
+ if(fd < 0)
return nil;
/* create the capability */
@@ -113,10 +100,12 @@ mkcap(char *from, char *to)
/* give the kernel the hash */
key[-1] = '@';
- if(write(caphashfd, hash, SHA1dlen) < 0){
+ if(write(fd, hash, SHA1dlen) < 0){
+ close(fd);
free(cap);
return nil;
}
+ close(fd);
return cap;
}