diff options
author | Greg Hudson <ghudson@mit.edu> | 2013-08-12 15:17:20 -0400 |
---|---|---|
committer | Greg Hudson <ghudson@mit.edu> | 2013-08-12 15:26:21 -0400 |
commit | 37eb601a1294244b179cb0e6e6cfb4a16709ccfa (patch) | |
tree | f0fdd5d792358ce77804c47e8bded91da08c9b26 /src/lib/krb5 | |
parent | 34efd90d941999b277b901cf6ea18ac52141f7e9 (diff) | |
download | krb5-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.c | 1 | ||||
-rw-r--r-- | src/lib/krb5/libkrb5.exports | 1 | ||||
-rw-r--r-- | src/lib/krb5/os/localauth.c | 7 | ||||
-rw-r--r-- | src/lib/krb5/os/os-proto.h | 1 |
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, |