]> git.lizzy.rs Git - plan9front.git/blobdiff - sys/src/cmd/cwfs/auth.c
merge
[plan9front.git] / sys / src / cmd / cwfs / auth.c
index 1e77659189090839ad89edf150e57ddc3a1b4f3d..e3d51be7e383d4ff6d4d9959ac4509c76c0aac8f 100644 (file)
@@ -103,7 +103,7 @@ authnew(void)
                return nil;
        }
        if(auth_rpc(rpc, "start", keyspec, strlen(keyspec)) != ARok){
-               auth_freerpc(rpc);
+               authfree(rpc);
                return nil;
        }
        return rpc;
@@ -114,16 +114,20 @@ authfree(void *auth)
 {
        AuthRpc *rpc;
 
-       if(rpc = auth)
+       if(rpc = auth){
+               close(rpc->afd);
                auth_freerpc(rpc);
+       }
 }
 
 int
-authread(Chan *chan, File *file, uchar *data, int count)
+authread(File *file, uchar *data, int count)
 {
        AuthInfo *ai;
        AuthRpc *rpc;
+       Chan *chan;
 
+       chan = file->cp;
        if((rpc = file->auth) == nil){
                snprint(chan->err, sizeof(chan->err),
                        "not an auth fid");
@@ -139,12 +143,13 @@ authread(Chan *chan, File *file, uchar *data, int count)
                if((ai = auth_getinfo(rpc)) == nil)
                        goto Phase;
                file->uid = strtouid(ai->cuid);
-               auth_freeAI(ai);
                if(file->uid < 0){
                        snprint(chan->err, sizeof(chan->err),
                                "unknown user '%s'", ai->cuid);
+                       auth_freeAI(ai);
                        return -1;
                }
+               auth_freeAI(ai);
                return 0;
        case ARok:
                if(count < rpc->narg){
@@ -162,10 +167,12 @@ authread(Chan *chan, File *file, uchar *data, int count)
 }
 
 int
-authwrite(Chan *chan, File *file, uchar *data, int count)
+authwrite(File *file, uchar *data, int count)
 {
        AuthRpc *rpc;
+       Chan *chan;
 
+       chan = file->cp;
        if((rpc = file->auth) == nil){
                snprint(chan->err, sizeof(chan->err),
                        "not an auth fid");