summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/environ.c10
-rw-r--r--src/mod_auth_gssapi.c2
-rw-r--r--src/mod_auth_gssapi.h1
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;