From: Greg Hudson Date: Mon, 12 Aug 2013 19:17:20 +0000 (-0400) Subject: Fix localauth memory leak X-Git-Tag: krb5-1.12-alpha1~64 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=37eb601a1294244b179cb0e6e6cfb4a16709ccfa;p=thirdparty%2Fkrb5.git Fix localauth memory leak localauth modules were not freed by krb5_free_context(), causing a memory leak. --- 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,