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.12.2-final~12 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f7a9d09b097bcc1f890e0f9a55f9cf812b29226d;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] (cherry picked from commit 53362ba69fb5a60386dd358c3450bfcf4f6b7346) ticket: 7966 version_fixed: 1.12.2 status: resolved --- diff --git a/src/lib/gssapi/mechglue/g_initialize.c b/src/lib/gssapi/mechglue/g_initialize.c index 50e37e13c2..68aa7a7aa9 100644 --- a/src/lib/gssapi/mechglue/g_initialize.c +++ b/src/lib/gssapi/mechglue/g_initialize.c @@ -591,8 +591,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) /* @@ -704,8 +706,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. */