Patch from Luke Howard to allow dynamic gss_mo

This commit is contained in:
Love Hornquist Astrand
2011-03-12 12:45:53 -08:00
parent 2b2ab30f53
commit fbf5cff0ac
2 changed files with 20 additions and 1 deletions

View File

@@ -454,9 +454,16 @@ typedef OM_uint32 GSSAPI_CALLCONV _gss_release_any_name_mapping_t (
gss_any_t * /* input */
);
/*
*
*/
typedef struct gss_mo_desc_struct gss_mo_desc;
typedef OM_uint32 GSSAPI_CALLCONV
_gss_mo_init (OM_uint32 *, gss_OID, gss_mo_desc **, size_t *);
struct gss_mo_desc_struct {
gss_OID option;
OM_uint32 flags;
@@ -469,7 +476,7 @@ struct gss_mo_desc_struct {
};
#define GMI_VERSION 4
#define GMI_VERSION 5
/* gm_flags */
#define GM_USE_MG_CRED 1 /* uses mech glue credentials */

View File

@@ -242,6 +242,8 @@ _gss_load_mech(void)
rk_cloexec_file(fp);
while (fgets(buf, sizeof(buf), fp)) {
_gss_mo_init *mi;
if (*buf == '#')
continue;
p = buf;
@@ -350,6 +352,16 @@ _gss_load_mech(void)
OPTSYM(map_name_to_any);
OPTSYM(release_any_name_mapping);
mi = dlsym(so, "gss_mo_init");
if (mi != NULL) {
major_status = mi(&minor_status,
&mech_oid,
&m->gm_mech.gm_mo,
&m->gm_mech.gm_mo_num);
if (GSS_ERROR(major_status))
goto bad;
}
HEIM_SLIST_INSERT_HEAD(&_gss_mechs, m, gm_link);
continue;