From cfb4b771af19d46d89b2a0104c70ad29e9e38c8c Mon Sep 17 00:00:00 2001 From: Alejandro Perez Date: Sat, 11 Feb 2017 11:44:39 +0000 Subject: Add cleanup function for mag_conn->name_attributes Reviewed-by: Simo Sorce Closes #127 --- src/environ.c | 10 ++++++++++ src/mod_auth_gssapi.c | 2 -- 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; -- cgit