summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAlejandro Perez <alex@um.es>2017-02-11 11:44:39 +0000
committerSimo Sorce <simo@redhat.com>2017-02-13 05:38:23 -0500
commitcfb4b771af19d46d89b2a0104c70ad29e9e38c8c (patch)
tree3e99c6cb4997f2d52eb9c87196633a8ddc0fa99d /src
parent9bd84625838b82a789fc291d85460ab2878093d6 (diff)
downloadmod_auth_gssapi-master.tar.gz
mod_auth_gssapi-master.tar.xz
mod_auth_gssapi-master.zip
Add cleanup function for mag_conn->name_attributesHEADmaster
Reviewed-by: Simo Sorce <simo@redhat.com> Closes #127
Diffstat (limited to 'src')
-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;