#define TRACE_NEGOEX_OUTGOING(c, seqnum, typestr, info) \
TRACE(c, "NegoEx sending [{int}]{str}: {str}", (int)seqnum, typestr, info)
+#define TRACE_PLUGIN_LOAD_FAIL(c, modname, err) \
+ TRACE(c, "Error loading plugin module {str}: {kerr}", modname, err)
+#define TRACE_PLUGIN_LOOKUP_FAIL(c, modname, err) \
+ TRACE(c, "Error initializing module {str}: {kerr}", modname, err)
+
#define TRACE_PREAUTH_CONFLICT(c, name1, name2, patype) \
TRACE(c, "Preauth module {str} conflicts with module {str} for pa " \
"type {patype}", name1, name2, patype)
load_if_needed(krb5_context context, struct plugin_mapping *map,
const char *iname)
{
+ krb5_error_code ret;
char *symname = NULL;
struct plugin_file_handle *handle = NULL;
void (*initvt_fn)();
return;
if (asprintf(&symname, "%s_%s_initvt", iname, map->modname) < 0)
return;
- if (krb5int_open_plugin(map->dyn_path, &handle, &context->err))
+
+ ret = krb5int_open_plugin(map->dyn_path, &handle, &context->err);
+ if (ret) {
+ TRACE_PLUGIN_LOAD_FAIL(context, map->modname, ret);
goto err;
- if (krb5int_get_plugin_func(handle, symname, &initvt_fn, &context->err))
+ }
+
+ ret = krb5int_get_plugin_func(handle, symname, &initvt_fn, &context->err);
+ if (ret) {
+ TRACE_PLUGIN_LOOKUP_FAIL(context, map->modname, ret);
goto err;
+ }
+
free(symname);
map->dyn_handle = handle;
map->module = (krb5_plugin_initvt_fn)initvt_fn;