~ubuntu-branches/ubuntu/lucid/nfs-utils/lucid

« back to all changes in this revision

Viewing changes to support/gssapi/g_indicate_mechs.c

  • Committer: Bazaar Package Importer
  • Author(s): Anibal Monsalve Salazar
  • Date: 2006-07-03 10:36:59 UTC
  • mto: (12.1.1 feisty)
  • mto: This revision was merged to the branch mainline in revision 6.
  • Revision ID: james.westby@ubuntu.com-20060703103659-71qzs6f21zzmjmhx
Tags: upstream-1.0.8
ImportĀ upstreamĀ versionĀ 1.0.8

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* #ident  "@(#)gss_indicate_mechs.c 1.13     95/08/04 SMI" */
2
 
 
3
 
/*
4
 
 * Copyright 1996 by Sun Microsystems, Inc.
5
 
 *
6
 
 * Permission to use, copy, modify, distribute, and sell this software
7
 
 * and its documentation for any purpose is hereby granted without fee,
8
 
 * provided that the above copyright notice appears in all copies and
9
 
 * that both that copyright notice and this permission notice appear in
10
 
 * supporting documentation, and that the name of Sun Microsystems not be used
11
 
 * in advertising or publicity pertaining to distribution of the software
12
 
 * without specific, written prior permission. Sun Microsystems makes no
13
 
 * representations about the suitability of this software for any
14
 
 * purpose.  It is provided "as is" without express or implied warranty.
15
 
 *
16
 
 * SUN MICROSYSTEMS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
17
 
 * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
18
 
 * EVENT SHALL SUN MICROSYSTEMS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
19
 
 * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
20
 
 * USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
21
 
 * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
22
 
 * PERFORMANCE OF THIS SOFTWARE.
23
 
 */
24
 
 
25
 
/*
26
 
 *  glue routine for gss_indicate_mechs
27
 
 */
28
 
 
29
 
#include "mglueP.h"
30
 
#include <stdio.h>
31
 
#ifdef HAVE_STDLIB_H
32
 
#include <stdlib.h>
33
 
#endif
34
 
#include <string.h>
35
 
 
36
 
extern gss_mechanism *__gss_mechs_array;
37
 
 
38
 
static gss_OID_set_desc supported_mechs_desc;
39
 
static gss_OID_set supported_mechs = NULL;
40
 
 
41
 
OM_uint32 KRB5_CALLCONV
42
 
gss_indicate_mechs (minor_status,
43
 
                    mech_set)
44
 
 
45
 
OM_uint32 *             minor_status;
46
 
gss_OID_set *           mech_set;
47
 
 
48
 
{
49
 
    int i;
50
 
 
51
 
    gss_initialize();
52
 
 
53
 
    if (minor_status)
54
 
        *minor_status = 0;
55
 
 
56
 
    /*
57
 
     * If we have already computed the mechanisms supported, return
58
 
     * a pointer to it. Otherwise, compute them and return the pointer.
59
 
     */
60
 
 
61
 
    if(supported_mechs == NULL) {
62
 
 
63
 
        supported_mechs = &supported_mechs_desc;
64
 
        supported_mechs->count = 0;
65
 
 
66
 
        /* Build the mech_set from the OIDs in mechs_array. */
67
 
 
68
 
        for(i=0; __gss_mechs_array[i]->mech_type.length != 0; i++)
69
 
            supported_mechs->count++;
70
 
 
71
 
        supported_mechs->elements =
72
 
            (void *) malloc(supported_mechs->count *
73
 
                            sizeof(gss_OID_desc));
74
 
 
75
 
        for(i=0; i < supported_mechs->count; i++) {
76
 
            supported_mechs->elements[i].length =
77
 
                __gss_mechs_array[i]->mech_type.length;
78
 
            supported_mechs->elements[i].elements = (void *)
79
 
                malloc(__gss_mechs_array[i]->mech_type.length);
80
 
            memcpy(supported_mechs->elements[i].elements,
81
 
                   __gss_mechs_array[i]->mech_type.elements,
82
 
                   __gss_mechs_array[i]->mech_type.length);
83
 
        }
84
 
    }
85
 
 
86
 
    if(mech_set != NULL)
87
 
        *mech_set = supported_mechs;
88
 
 
89
 
    return(GSS_S_COMPLETE);
90
 
}