[krbdev.mit.edu #8358] [Comment] Report inquire_attrs_for_mech mech failures
Greg Hudson via RT
rt-comment at kerborg-prod-app-1.mit.edu
Tue Nov 19 02:33:16 EST 2024
http://kerborg-prod-app-1.mit.edu/rt/Ticket/Display.html?id=8358
This is a comment. It is not sent to the Requestor(s):
This may need revisiting again.
In the current state (after these commits), an old mech returns GSS_S_COMPLETE
with *mech_attrs and *known_mech_attrs set to GSS_C_NO_OID_SET. RFC 5587
explicitly allows this for mech_attrs: "the output mech_attrs parameter MAY be
the empty set (GSS_C_NO_OID_SET)". It does not explicitly allow this for
known_mech_attrs; this is possibly an accidental omission in the RFC.
gss_indicate_mechs_by_attrs() uses generic_gss_test_oid_set_member() on the
values returned by gss_inquire_attrs_for_mech
(). generic_gss_test_oid_set_member() considers set==GSS_C_NO_OID_SET to be a
calling error and
returns GSS_S_CALL_INACCESSIBLE_READ. gss_indicate_mechs_by_attrs()
interprets any error as equivalent to success with present=0, but the
occurrence of a calling error suggests that either gss_inquire_attrs_for_mech
() is wrong to output GSS_C_NO_OID_SET or that gss_test_oid_set_member() is
wrong to consider set==GSS_C_NO_OID_SET to be an error.
RFC 2743 and 2744 do not say whether gss_test_oid_set_member() should error on
set==GSS_C_NO_OID_SET. They do not lend any general support to the idea of
using GSS_C_NO_OID_SET as a synonym for the empty set, and gss_acquire_cred()
uses desired_mechs==GSS_C_NO_OID_SET to indicate a default mechanism set, not
the empty set. So there is a reasonable argument that RFC 5587 should not
have included text permitting GSS_C_NO_OID_SET outputs.
Heimdal's gss_test_oid_set_member() crashes on set==GSS_C_NO_OID_SET, and its
gss_inquire_attrs_for_mech() does not appear to use GSS_C_NO_OID_SET outputs.
More information about the krb5-bugs
mailing list