Line data Source code
1 : /*
2 : * Copyright (c) 1997 Kungliga Tekniska Högskolan
3 : * (Royal Institute of Technology, Stockholm, Sweden).
4 : * All rights reserved.
5 : *
6 : * Redistribution and use in source and binary forms, with or without
7 : * modification, are permitted provided that the following conditions
8 : * are met:
9 : *
10 : * 1. Redistributions of source code must retain the above copyright
11 : * notice, this list of conditions and the following disclaimer.
12 : *
13 : * 2. Redistributions in binary form must reproduce the above copyright
14 : * notice, this list of conditions and the following disclaimer in the
15 : * documentation and/or other materials provided with the distribution.
16 : *
17 : * 3. Neither the name of the Institute nor the names of its contributors
18 : * may be used to endorse or promote products derived from this software
19 : * without specific prior written permission.
20 : *
21 : * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
22 : * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23 : * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24 : * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
25 : * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26 : * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27 : * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28 : * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29 : * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30 : * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31 : * SUCH DAMAGE.
32 : */
33 :
34 : #include "krb5_locl.h"
35 :
36 : KRB5_LIB_FUNCTION PA_DATA * KRB5_LIB_CALL
37 306535 : krb5_find_padata(PA_DATA *val, unsigned len, int type, int *idx)
38 : {
39 489003 : for(; *idx < (int)len; (*idx)++)
40 298880 : if(val[*idx].padata_type == (unsigned)type)
41 116412 : return val + *idx;
42 190123 : return NULL;
43 : }
44 :
45 : KRB5_LIB_FUNCTION int KRB5_LIB_CALL
46 242587 : krb5_padata_add(krb5_context context, METHOD_DATA *md,
47 : int type, void *buf, size_t len)
48 : {
49 : PA_DATA *pa;
50 :
51 242587 : pa = realloc (md->val, (md->len + 1) * sizeof(*md->val));
52 242587 : if (pa == NULL)
53 0 : return krb5_enomem(context);
54 242587 : md->val = pa;
55 :
56 242587 : pa[md->len].padata_type = type;
57 242587 : pa[md->len].padata_value.length = len;
58 242587 : pa[md->len].padata_value.data = buf;
59 242587 : md->len++;
60 :
61 242587 : return 0;
62 : }
|