summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTom Yu <tlyu@mit.edu>2010-02-05 20:52:42 +0000
committerTom Yu <tlyu@mit.edu>2010-02-05 20:52:42 +0000
commitfb17c38c7f85eecc87132484de2bdf4688cb5d33 (patch)
tree3316e0cfc1d6b13b5ccf6496c64828661e32d5dd /src
parent6581735ddea7215935e91c34a2103de1acfe3952 (diff)
downloadkrb5-fb17c38c7f85eecc87132484de2bdf4688cb5d33.tar.gz
krb5-fb17c38c7f85eecc87132484de2bdf4688cb5d33.tar.xz
krb5-fb17c38c7f85eecc87132484de2bdf4688cb5d33.zip
Apply patch from Arlene Berry to handle the case where a mechanism
implements set_cred_option but does not implement the requested option. ticket: 6601 tags: pullup target_version: 1.8 git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@23698 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src')
-rw-r--r--src/lib/gssapi/mechglue/g_set_cred_option.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/lib/gssapi/mechglue/g_set_cred_option.c b/src/lib/gssapi/mechglue/g_set_cred_option.c
index fc8ed4c76..ff388d9e3 100644
--- a/src/lib/gssapi/mechglue/g_set_cred_option.c
+++ b/src/lib/gssapi/mechglue/g_set_cred_option.c
@@ -45,6 +45,8 @@ gssspi_set_cred_option(OM_uint32 *minor_status,
gss_mechanism mech;
int i;
OM_uint32 status;
+ OM_uint32 mech_status;
+ OM_uint32 mech_minor_status;
if (minor_status == NULL)
return GSS_S_CALL_INACCESSIBLE_WRITE;
@@ -66,14 +68,20 @@ gssspi_set_cred_option(OM_uint32 *minor_status,
}
if (mech->gssspi_set_cred_option == NULL) {
- status = GSS_S_UNAVAILABLE;
continue;
}
- status = (mech->gssspi_set_cred_option)(minor_status,
+ mech_status = (mech->gssspi_set_cred_option)(&mech_minor_status,
union_cred->cred_array[i],
desired_object,
value);
+ if (mech_status == GSS_S_UNAVAILABLE) {
+ continue;
+ }
+ else {
+ status = mech_status;
+ *minor_status = mech_minor_status;
+ }
if (status != GSS_S_COMPLETE) {
map_error(minor_status, mech);
break;