]> git.lizzy.rs Git - plan9front.git/blob - sys/src/libauthsrv/_asgetticket.c
mkpaqfs(8): allow setting compression level
[plan9front.git] / sys / src / libauthsrv / _asgetticket.c
1 #include <u.h>
2 #include <libc.h>
3 #include <authsrv.h>
4
5 int
6 _asgetticket(int fd, Ticketreq *tr, char *tbuf, int tbuflen)
7 {
8         char err[ERRMAX];
9         int i, n, m, r;
10
11         strcpy(err, "AS protocol botch");
12         errstr(err, ERRMAX);
13
14         if(_asrequest(fd, tr) < 0)
15                 return -1;
16         if(_asrdresp(fd, tbuf, 0) < 0)
17                 return -1;
18
19         r = 0;
20         for(i = 0; i<2; i++){
21                 for(n=0; (m = convM2T(tbuf, n, nil, nil)) <= 0; n += m){
22                         m = -m;
23                         if(m <= n || m > tbuflen)
24                                 return -1;
25                         m -= n;
26                         if(readn(fd, tbuf+n, m) != m)
27                                 return -1;
28                 }
29                 r += n;
30                 tbuf += n;
31                 tbuflen -= n;
32         }
33
34         errstr(err, ERRMAX);
35
36         return r;
37 }