diff options
-rw-r--r-- | src/environ.c | 10 | ||||
-rw-r--r-- | src/mod_auth_gssapi.c | 2 | ||||
-rw-r--r-- | src/mod_auth_gssapi.h | 1 |
3 files changed, 11 insertions, 2 deletions
diff --git a/src/environ.c b/src/environ.c index e3a021a..840ccd2 100644 --- a/src/environ.c +++ b/src/environ.c @@ -35,6 +35,14 @@ static bool mag_get_name_attr(request_rec *req, return true; } +static apr_status_t mag_mc_name_attrs_cleanup(void *data) +{ + struct mag_conn *mc = (struct mag_conn *)data; + free(mc->name_attributes); + mc->name_attributes = NULL; + return 0; +} + static void mc_add_name_attribute(struct mag_conn *mc, const char *name, const char *value) { @@ -44,6 +52,8 @@ static void mc_add_name_attribute(struct mag_conn *mc, size = sizeof(struct mag_attr) * (mc->na_count + 16); mc->name_attributes = realloc(mc->name_attributes, size); if (!mc->name_attributes) apr_pool_abort_get(mc->pool)(ENOMEM); + apr_pool_userdata_setn(mc, GSS_NAME_ATTR_USERDATA, + mag_mc_name_attrs_cleanup, mc->pool); } mc->name_attributes[mc->na_count].name = apr_pstrdup(mc->pool, name); diff --git a/src/mod_auth_gssapi.c b/src/mod_auth_gssapi.c index 91c8f68..8226ecc 100644 --- a/src/mod_auth_gssapi.c +++ b/src/mod_auth_gssapi.c @@ -1601,8 +1601,6 @@ static const char *mag_negotiate_once(cmd_parms *parms, void *mconfig, int on) return NULL; } -#define GSS_NAME_ATTR_USERDATA "GSS Name Attributes Userdata" - static apr_status_t mag_name_attrs_cleanup(void *data) { struct mag_config *cfg = (struct mag_config *)data; diff --git a/src/mod_auth_gssapi.h b/src/mod_auth_gssapi.h index fb47b12..14bc10b 100644 --- a/src/mod_auth_gssapi.h +++ b/src/mod_auth_gssapi.h @@ -53,6 +53,7 @@ #endif extern module AP_MODULE_DECLARE_DATA auth_gssapi_module; +#define GSS_NAME_ATTR_USERDATA "GSS Name Attributes Userdata" struct mag_na_map { char *env_name; |