Patch from Luke Howard to allow dynamic gss_mo
This commit is contained in:
@@ -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 */
|
||||
|
@@ -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;
|
||||
|
||||
|
Reference in New Issue
Block a user