[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

krb5_warn as replacement for com_err

I've been running into issues with Heimdal's libcom_err...  In particular,
the fact that krb5_init_ets() doesn't use the global _et_list, but rather
uses a private field in the krb5_context.  The problem is that the standard
libcom_err functions that everyone's used to (error_message(int), and
com_err(char *, int, fmt, ...)) have no concept of krb5's private
_et_lists.  error_message() is effectively replaced by krb5_get_err_text(),
but I'm less sure that com_err() is replaced by krb5_warn().  In particular,
I'm worried that krb5_warn() doesn't have an equivalent for 'whoami', and
that it might log to syslog() itself.  So, how should I go about trying to
fix the calls to com_err()?

Options I'm considering:
1) use krb5_warn(),
2) maybe add a function for retrieving the et_list from the krb5_context,
and adding _r variants to most of the com_err functions,
3) add the krb5_get_et_list(kcontext), and just set
_et_list = krb5_get_et_list(), or
4) change Heimdal's krb5_init_ets(), and anything that calls com_right(),
to use the global _et_list.  I believe this matches the MIT behaviour more

Any thoughts?