summaryrefslogtreecommitdiffstats
path: root/src/lib/krb5
diff options
context:
space:
mode:
authorGreg Hudson <ghudson@mit.edu>2013-08-12 15:17:20 -0400
committerGreg Hudson <ghudson@mit.edu>2013-08-12 15:26:21 -0400
commit37eb601a1294244b179cb0e6e6cfb4a16709ccfa (patch)
treef0fdd5d792358ce77804c47e8bded91da08c9b26 /src/lib/krb5
parent34efd90d941999b277b901cf6ea18ac52141f7e9 (diff)
downloadkrb5-37eb601a1294244b179cb0e6e6cfb4a16709ccfa.tar.gz
krb5-37eb601a1294244b179cb0e6e6cfb4a16709ccfa.tar.xz
krb5-37eb601a1294244b179cb0e6e6cfb4a16709ccfa.zip
Fix localauth memory leak
localauth modules were not freed by krb5_free_context(), causing a memory leak.
Diffstat (limited to 'src/lib/krb5')
-rw-r--r--src/lib/krb5/krb/init_ctx.c1
-rw-r--r--src/lib/krb5/libkrb5.exports1
-rw-r--r--src/lib/krb5/os/localauth.c7
-rw-r--r--src/lib/krb5/os/os-proto.h1
4 files changed, 10 insertions, 0 deletions
diff --git a/src/lib/krb5/krb/init_ctx.c b/src/lib/krb5/krb/init_ctx.c
index 58eb01ad5b..39b6853cba 100644
--- a/src/lib/krb5/krb/init_ctx.c
+++ b/src/lib/krb5/krb/init_ctx.c
@@ -310,6 +310,7 @@ krb5_free_context(krb5_context ctx)
#endif
k5_ccselect_free_context(ctx);
+ k5_localauth_free_context(ctx);
k5_plugin_free_context(ctx);
free(ctx->plugin_base_dir);
diff --git a/src/lib/krb5/libkrb5.exports b/src/lib/krb5/libkrb5.exports
index 3ade55f3da..665db7fa6d 100644
--- a/src/lib/krb5/libkrb5.exports
+++ b/src/lib/krb5/libkrb5.exports
@@ -117,6 +117,7 @@ k5_free_pa_otp_req
k5_free_serverlist
k5_init_trace
k5_kt_get_principal
+k5_localauth_free_context
k5_locate_kdc
k5_os_free_context
k5_os_init_context
diff --git a/src/lib/krb5/os/localauth.c b/src/lib/krb5/os/localauth.c
index 81ab5d8ab5..8e1a3a3f85 100644
--- a/src/lib/krb5/os/localauth.c
+++ b/src/lib/krb5/os/localauth.c
@@ -434,3 +434,10 @@ krb5_aname_to_localname(krb5_context context, krb5_const_principal aname,
}
return KRB5_LNAME_NOTRANS;
}
+
+void
+k5_localauth_free_context(krb5_context context)
+{
+ free_handles(context, context->localauth_handles);
+ context->localauth_handles = NULL;
+}
diff --git a/src/lib/krb5/os/os-proto.h b/src/lib/krb5/os/os-proto.h
index 18c4dc4bc4..e2891a1e0e 100644
--- a/src/lib/krb5/os/os-proto.h
+++ b/src/lib/krb5/os/os-proto.h
@@ -146,6 +146,7 @@ extern unsigned int krb5_max_skdc_timeout;
extern unsigned int krb5_skdc_timeout_shift;
extern unsigned int krb5_skdc_timeout_1;
+void k5_localauth_free_context(krb5_context);
krb5_error_code localauth_names_initvt(krb5_context context, int maj_ver,
int min_ver, krb5_plugin_vtable vtable);
krb5_error_code localauth_rule_initvt(krb5_context context, int maj_ver,