gss_display_status() bug dealing with minor/mech specific error codes?

Will Fiveash will.fiveash at
Tue Apr 23 20:11:09 EDT 2013

On Tue, Apr 23, 2013 at 05:51:43PM -0500, Will Fiveash wrote:
> gssint_mecherrmap_get() is passing the global variable m, defined in
> src/lib/gssapi/generic/util_errmap.c, to mecherrmap_findleft() but I
> don't believe it has been initialized.  AFAICT, m is initialized by
> gssint_mecherrmap_init() yet I don't see that call in the truss output.
> Thoughts?

I'll also add that when I remove:

	int err;
	OM_uint32 m_status = 0, status;

	err = gssint_mecherrmap_get(status_value, &m_oid, &m_status);
	if (err) {
	    *minor_status = err;
	    return GSS_S_BAD_STATUS;
	if (m_oid.length == 0) {
	    /* Magic flag for com_err values.  */
	    status = g_display_com_err_status(minor_status, m_status, status_string);
	    if (status != GSS_S_COMPLETE)
	    return status;
	mech_type = &m_oid;
	status_value = m_status;

from gss_display_status() then I see:

Minor status (krb mech): Credentials cache file permissions incorrect

when I run the test program.

Will Fiveash
Oracle Solaris Software Engineer

More information about the krbdev mailing list