Blame src/util/et/ISSUES

Packit fd8b60
Issues to be addressed for src/util/et: -*- text -*-
Packit fd8b60
Packit fd8b60
Packit fd8b60
Non-thread-safe aspects:
Packit fd8b60
Packit fd8b60
error_message uses a static buffer for "unknown error code" messages;
Packit fd8b60
a per-thread buffer may be better, but that depends on dynamic
Packit fd8b60
allocation working.  A caller-provided buffer would be best, but
Packit fd8b60
that's a API change.
Packit fd8b60
Packit fd8b60
initialize_foo_error_table uses a global linked list hung off an
Packit fd8b60
unprotected variable in the library.  {add,remove}_error_table do
Packit fd8b60
likewise, but can be changed without externally visible effect.
Packit fd8b60
Packit fd8b60
Workaround: Use a global lock for all calls to error_message and
Packit fd8b60
com_err, and when adding or removing error tables.
Packit fd8b60
Packit fd8b60
Packit fd8b60
API divergence:
Packit fd8b60
Packit fd8b60
Transarc and Heimdal both have APIs that are different from this
Packit fd8b60
version.  (Specifics?)
Packit fd8b60
Packit fd8b60
Karl Ramm has offered to try to combine them.
Packit fd8b60
Packit fd8b60
Workaround:
Packit fd8b60
Packit fd8b60
Packit fd8b60
Reference counting:
Packit fd8b60
Packit fd8b60
If libraries are dynamically loaded and unloaded, and the init/fini
Packit fd8b60
functions add and remove error tables for *other* libraries they
Packit fd8b60
depend on (e.g., if a dynamically loadable Zephyr library's fini
Packit fd8b60
function removes the krb4 library error table and then dlcloses the
Packit fd8b60
krb4 library, while another dlopen reference keeps the krb4 library
Packit fd8b60
around), the error table is kept; a table must be removed the same
Packit fd8b60
number of times it was added before the library itself can be
Packit fd8b60
discarded.
Packit fd8b60
Packit fd8b60
It's not implemented as a reference count, but the effect is the same.
Packit fd8b60
Packit fd8b60
Fix needed: Update documentation.
Packit fd8b60
Packit fd8b60
Packit fd8b60
64-bit support:
Packit fd8b60
Packit fd8b60
Values are currently computed as 32-bit values, sign-extended to
Packit fd8b60
"long", and output with "L" suffixes.  Type errcode_t is "long".
Packit fd8b60
Kerberos uses a separately chosen signed type of at least 32 bits for
Packit fd8b60
error codes.  The com_err library only look at the low 32 bits, so
Packit fd8b60
this is mostly just an issue for application code -- if anything
Packit fd8b60
truncates to 32 bits, and then widens without sign-extending, the
Packit fd8b60
value may not compare equal to the macro defined in the .h file.  This
Packit fd8b60
isn't anything unusual for signed constants, of course, just something
Packit fd8b60
to keep in mind....
Packit fd8b60
Packit fd8b60
Workaround: Always use signed types of at least 32 bits for error
Packit fd8b60
codes.
Packit fd8b60
Packit fd8b60
Packit fd8b60
man page:
Packit fd8b60
Packit fd8b60
No documentation on add_error_table/remove_error_table interfaces,
Packit fd8b60
even though they're the new, preferred interface.