From 3bf89ed825835b574c3d1c7f640918e65aac488d Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Thu, 22 Dec 2016 21:55:56 +0100 Subject: auth/as: simplify further --- sys/src/cmd/auth/as.c | 23 ++++++----------------- 1 file 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) @@ -69,19 +67,6 @@ main(int argc, char *argv[]) run(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 */ @@ -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; } -- cgit v1.2.3