(_gss_find_mn): Return an error code for caller.

git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@21473 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Love Hörnquist Åstrand
2007-07-10 16:29:53 +00:00
parent ccb7332e0b
commit 10bcbfc468

View File

@@ -29,13 +29,16 @@
#include "mech_locl.h"
RCSID("$Id$");
struct _gss_mechanism_name *
_gss_find_mn(struct _gss_name *name, gss_OID mech)
OM_uint32
_gss_find_mn(OM_uint32 *minor_status, struct _gss_name *name, gss_OID mech,
struct _gss_mechanism_name **output_mn)
{
OM_uint32 major_status, minor_status;
OM_uint32 major_status;
gssapi_mech_interface m;
struct _gss_mechanism_name *mn;
*output_mn = NULL;
SLIST_FOREACH(mn, &name->gn_mn, gmn_link) {
if (gss_oid_equal(mech, mn->gmn_mech_oid))
break;
@@ -47,34 +50,36 @@ _gss_find_mn(struct _gss_name *name, gss_OID mech)
* MN but it is from a different mech), give up now.
*/
if (!name->gn_value.value)
return (0);
return GSS_S_BAD_NAME;
m = __gss_get_mechanism(mech);
if (!m)
return (0);
return (GSS_S_BAD_MECH);
mn = malloc(sizeof(struct _gss_mechanism_name));
if (!mn)
return (0);
return GSS_S_FAILURE;
major_status = m->gm_import_name(&minor_status,
major_status = m->gm_import_name(minor_status,
&name->gn_value,
(name->gn_type.elements
? &name->gn_type : GSS_C_NO_OID),
&mn->gmn_name);
if (major_status != GSS_S_COMPLETE) {
_gss_mg_error(m, major_status, minor_status);
_gss_mg_error(m, major_status, *minor_status);
free(mn);
return (0);
return major_status;
}
mn->gmn_mech = m;
mn->gmn_mech_oid = &m->gm_mech_oid;
SLIST_INSERT_HEAD(&name->gn_mn, mn, gmn_link);
}
return (mn);
*output_mn = mn;
return 0;
}
/*
* Make a name from an MN.
*/