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

Will Fiveash will.fiveash at oracle.com
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;
	    map_errcode(minor_status);
	    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)
		map_errcode(minor_status);
	    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