krb5 commit [krb5-1.14]: Report inquire_attrs_for_mech mech failures
Tom Yu
tlyu at mit.edu
Tue Apr 5 23:02:51 EDT 2016
https://github.com/krb5/krb5/commit/96125088fc6cf56dd839004dc6f6ef202de9da7e
commit 96125088fc6cf56dd839004dc6f6ef202de9da7e
Author: Robbie Harwood <rharwood at redhat.com>
Date: Wed Jan 27 18:48:04 2016 -0500
Report inquire_attrs_for_mech mech failures
Previously, gss_inquire_attrs_for_mech() would return a list of mech
attributes that it knew about when given a bad mech oid or a mechanism
which did not provide a gss_inquire_attrs_for_mech() method. It seems
more useful to just report the failure to the application rather than
allowing it to continue with a faulty mechanism.
(cherry picked from commit 030a4a03a0480969d6acf1591f39fd194642805a)
ticket: 8358
src/lib/gssapi/mechglue/g_mechattr.c | 19 ++++++++++---------
1 files changed, 10 insertions(+), 9 deletions(-)
diff --git a/src/lib/gssapi/mechglue/g_mechattr.c b/src/lib/gssapi/mechglue/g_mechattr.c
index 57c0e52..08a6008 100644
--- a/src/lib/gssapi/mechglue/g_mechattr.c
+++ b/src/lib/gssapi/mechglue/g_mechattr.c
@@ -179,15 +179,16 @@ gss_inquire_attrs_for_mech(
return status;
mech = gssint_get_mechanism(selected_mech);
- if (mech != NULL && mech->gss_inquire_attrs_for_mech != NULL) {
- public_mech = gssint_get_public_oid(selected_mech);
- status = mech->gss_inquire_attrs_for_mech(minor, public_mech,
- mech_attrs,
- known_mech_attrs);
- if (GSS_ERROR(status)) {
- map_error(minor, mech);
- return status;
- }
+ if (mech == NULL)
+ return GSS_S_BAD_MECH;
+ else if (mech->gss_inquire_attrs_for_mech == NULL)
+ return GSS_S_UNAVAILABLE;
+ public_mech = gssint_get_public_oid(selected_mech);
+ status = mech->gss_inquire_attrs_for_mech(minor, public_mech, mech_attrs,
+ known_mech_attrs);
+ if (GSS_ERROR(status)) {
+ map_error(minor, mech);
+ return status;
}
if (known_mech_attrs != NULL && *known_mech_attrs == GSS_C_NO_OID_SET) {
More information about the cvs-krb5
mailing list