Tidy up UKERNEL includes
[openafs.git] / src / kauth / kaaux.c
1 /*
2  * Copyright 2000, International Business Machines Corporation and others.
3  * All Rights Reserved.
4  * 
5  * This software has been released under the terms of the IBM Public
6  * License.  For details, see the LICENSE file in the top-level source
7  * directory or online at http://www.openafs.org/dl/license10.html
8  */
9
10 #include <afsconfig.h>
11 #include <afs/param.h>
12
13
14 #include <rx/xdr.h>
15 #include <afs/kauth.h>
16
17 #define MAXBS   2048            /* try to avoid horrible allocs */
18
19 int
20 xdr_ka_CBS(XDR * x, struct ka_CBS *abbs)
21 {
22     afs_int32 len;
23     if (x->x_op == XDR_FREE) {
24         free(abbs->SeqBody);
25         return TRUE;
26     }
27
28     if (x->x_op == XDR_ENCODE) {
29         xdr_afs_int32(x, &abbs->SeqLen);
30         xdr_opaque(x, abbs->SeqBody, abbs->SeqLen);
31         return TRUE;
32     } else {
33         xdr_afs_int32(x, &len);
34         if (len < 0 || len > MAXBS)
35             return FALSE;
36         if (!abbs->SeqBody)
37             abbs->SeqBody = (char *)malloc(len);
38         abbs->SeqLen = len;
39         xdr_opaque(x, abbs->SeqBody, len);
40         return TRUE;
41     }
42 }
43
44 int
45 xdr_ka_BBS(XDR * x, struct ka_BBS *abbs)
46 {
47     afs_int32 maxLen, len;
48     if (x->x_op == XDR_FREE) {
49         free(abbs->SeqBody);
50         return TRUE;
51     }
52
53     if (x->x_op == XDR_ENCODE) {
54         if (!xdr_afs_int32(x, &abbs->MaxSeqLen)
55             || !xdr_afs_int32(x, &abbs->SeqLen)
56             || !xdr_opaque(x, abbs->SeqBody, abbs->SeqLen))
57             return FALSE;
58         return TRUE;
59     } else {
60         if (!xdr_afs_int32(x, &maxLen) || !xdr_afs_int32(x, &len) || (len < 0)
61             || (len > MAXBS) || (len > maxLen))
62             return FALSE;
63         if (!abbs->SeqBody)
64             abbs->SeqBody = (char *)malloc(maxLen);
65         abbs->MaxSeqLen = maxLen;
66         abbs->SeqLen = len;
67         if (!xdr_opaque(x, abbs->SeqBody, len))
68             return FALSE;
69         return TRUE;
70     }
71 }