From: Kevin Coffman Date: Wed, 29 Nov 2006 00:17:52 +0000 (+0000) Subject: skip all modules in plugin if init function fails X-Git-Tag: krb5-1.7-alpha1~1430 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=31470c7c55ade500a0e420642798d1261de61d6a;p=krb5.git skip all modules in plugin if init function fails If the plugin initialization function fails, skip all modules in the plugin, not just the first. Also, print the error message from the plugin if supplied. ticket: new Target_Version: 1.6 Tags: pullup Component: krb5-kdc git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@18873 dc483132-0cff-0310-8789-dd5450dbe970 --- diff --git a/src/kdc/kdc_preauth.c b/src/kdc/kdc_preauth.c index 9994ae3ea..6c362d9e6 100644 --- a/src/kdc/kdc_preauth.c +++ b/src/kdc/kdc_preauth.c @@ -394,10 +394,22 @@ load_preauth_plugins(krb5_context context) * from the list of modules we'll be using. */ if (j == 0) { server_init_proc = ftable->init_proc; - if ((server_init_proc != NULL) && - ((*server_init_proc)(context, &plugin_context) != 0)) { - memset(&preauth_systems[k], 0, sizeof(preauth_systems[k])); - continue; + if (server_init_proc != NULL) { + krb5_error_code initerr; + initerr = (*server_init_proc)(context, &plugin_context); + if (initerr) { + const char *emsg; + emsg = krb5_get_error_message(context, initerr); + if (emsg) { + krb5_klog_syslog(LOG_ERR, + "preauth %s failed to initialize: %s", + ftable->name, emsg); + krb5_free_error_message(context, emsg); + } + memset(&preauth_systems[k], 0, sizeof(preauth_systems[k])); + + break; /* skip all modules in this plugin */ + } } } preauth_systems[k].name = ftable->name;