From: Simo Sorce Date: Thu, 10 Jul 2014 14:04:06 +0000 (-0400) Subject: Fix leak on GSS module symbol resolution error X-Git-Tag: krb5-1.13-alpha1~43 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=53362ba69fb5a60386dd358c3450bfcf4f6b7346;p=thirdparty%2Fkrb5.git Fix leak on GSS module symbol resolution error If krb5int_get_plugin_func fails, errinfo may contain an allocated error message. Free it on error when loading GSS modules. [ghudson@mit.edu: also fix GSS_ADD_DYNAMIC_METHOD; clarify commit message] ticket: 7966 (new) target_version: 1.12.2 tags: pullup --- diff --git a/src/lib/gssapi/mechglue/g_initialize.c b/src/lib/gssapi/mechglue/g_initialize.c index b0eb40a572..04ba87958c 100644 --- a/src/lib/gssapi/mechglue/g_initialize.c +++ b/src/lib/gssapi/mechglue/g_initialize.c @@ -614,8 +614,10 @@ gssint_register_mechinfo(gss_mech_info template) if (krb5int_get_plugin_func(_dl, \ #_symbol, \ (void (**)())&(_mech)->_symbol, \ - &errinfo) || errinfo.code) \ + &errinfo) || errinfo.code) { \ (_mech)->_symbol = NULL; \ + k5_clear_error(&errinfo); \ + } \ } while (0) /* @@ -727,8 +729,10 @@ build_dynamicMech(void *dl, const gss_OID mech_type) "gssi" #_nsym, \ (void (**)())&(_mech)->_psym \ ## _nsym, \ - &errinfo) || errinfo.code) \ + &errinfo) || errinfo.code) { \ (_mech)->_psym ## _nsym = NULL; \ + k5_clear_error(&errinfo); \ + } \ } while (0) /* Build an interposer mechanism function table from dl. */