diff options
-rw-r--r-- | proxy/src/mechglue/gss_plugin.c | 26 | ||||
-rw-r--r-- | proxy/src/mechglue/gss_plugin.h | 1 |
2 files changed, 27 insertions, 0 deletions
diff --git a/proxy/src/mechglue/gss_plugin.c b/proxy/src/mechglue/gss_plugin.c index 31ace12..4f7ad62 100644 --- a/proxy/src/mechglue/gss_plugin.c +++ b/proxy/src/mechglue/gss_plugin.c @@ -342,6 +342,32 @@ done: return amechs; } +OM_uint32 gssi_internal_release_oid(OM_uint32 *minor_status, gss_OID *oid) +{ + struct gpp_special_oid_list *item = NULL; + + *minor_status = 0; + + if (&gssproxy_mech_interposer == *oid) { + *oid = GSS_C_NO_OID; + return GSS_S_COMPLETE; + } + + item = gpp_get_special_oids(); + + while (item) { + if (&item->oid == *oid) { + *oid = GSS_C_NO_OID; + return GSS_S_COMPLETE; + } + item = gpp_next_special_oids(item); + } + + /* none matched, it's not ours */ + return GSS_S_CONTINUE_NEEDED; +} + + #define MAP_ERROR_BASE 0x04200000 uint32_t gpp_map_error(uint32_t err) diff --git a/proxy/src/mechglue/gss_plugin.h b/proxy/src/mechglue/gss_plugin.h index 7dcacec..15f8d76 100644 --- a/proxy/src/mechglue/gss_plugin.h +++ b/proxy/src/mechglue/gss_plugin.h @@ -68,6 +68,7 @@ uint32_t gpp_name_to_local(uint32_t *minor, gssx_name *name, gss_OID mech_type, gss_name_t *mech_name); uint32_t gpp_local_to_name(uint32_t *minor, gss_name_t local_name, gssx_name **name); +OM_uint32 gssi_internal_release_oid(OM_uint32 *minor_status, gss_OID *oid); OM_uint32 gssi_acquire_cred(OM_uint32 *minor_status, const gss_name_t desired_name, |