8f3d434eb657efacc38ba58c2985fcab323bfd66
[krb5.git] / src / lib / gssapi / generic / util_oid.c
1 /*
2  * Copyright 1993 by OpenVision Technologies, Inc.
3  * 
4  * Permission to use, copy, modify, distribute, and sell this software
5  * and its documentation for any purpose is hereby granted without fee,
6  * provided that the above copyright notice appears in all copies and
7  * that both that copyright notice and this permission notice appear in
8  * supporting documentation, and that the name of OpenVision not be used
9  * in advertising or publicity pertaining to distribution of the software
10  * without specific, written prior permission. OpenVision makes no
11  * representations about the suitability of this software for any
12  * purpose.  It is provided "as is" without express or implied warranty.
13  * 
14  * OPENVISION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
15  * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
16  * EVENT SHALL OPENVISION BE LIABLE FOR ANY SPECIAL, INDIRECT OR
17  * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
18  * USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
19  * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
20  * PERFORMANCE OF THIS SOFTWARE.
21  */
22
23 #include "gssapiP_generic.h"
24
25 int INTERFACE
26 g_copy_OID_set(in, out)
27      const gss_OID_set_desc * const in;
28      gss_OID_set *out;
29 {
30    gss_OID_set copy;
31    int i;
32
33    *out = NULL;
34
35    if ((copy =
36         (gss_OID_set_desc *) xmalloc(sizeof(gss_OID_set_desc))) == NULL)
37       return(0);
38
39    copy->count = in->count;
40
41    if ((copy->elements = 
42         (gss_OID_desc *) xmalloc(sizeof(gss_OID_desc)*copy->count)) == NULL) {
43       xfree(copy);
44       return(0);
45    }
46
47    for (i=0; i<in->count; i++)
48       copy->elements[i] = in->elements[i];
49
50    *out = copy;
51    return(1);
52 }