summaryrefslogtreecommitdiffstats
path: root/src/environ.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/environ.c')
-rw-r--r--src/environ.c10
1 files changed, 10 insertions, 0 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);