aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGreg Hudson <ghudson@mit.edu>2020-11-21 01:41:41 -0500
committerGreg Hudson <ghudson@mit.edu>2021-01-08 12:14:38 -0500
commita1b5cf2429cf33d77a4fd0aa2849b3d3661f6e05 (patch)
tree20e7820f1159ada4aecc047ad59d8a484a88b62d
parent58b4b38e104f0a73b7ac5700c1715a22bbb4604b (diff)
downloadkrb5-a1b5cf2429cf33d77a4fd0aa2849b3d3661f6e05.zip
krb5-a1b5cf2429cf33d77a4fd0aa2849b3d3661f6e05.tar.gz
krb5-a1b5cf2429cf33d77a4fd0aa2849b3d3661f6e05.tar.bz2
Continue on KRB5_FCC_NOFILE in KCM cache iteration
Although Heimdal's KCM client only continues after KRB5_CC_END, Heimdal's and macOS's KCM server returns KRB5_FCC_NOFILE if a cache uuid no longer exists. Check for both errors during iteration. Also set ret to 0 when continuing, in case the skipped uuid is the last one in the list. (cherry picked from commit f7b3cb8bbe90817f7bfbc545f1e427c16f52a79c) ticket: 8967 version_fixed: 1.19
-rw-r--r--src/lib/krb5/ccache/cc_kcm.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/lib/krb5/ccache/cc_kcm.c b/src/lib/krb5/ccache/cc_kcm.c
index a76a285..9093f89 100644
--- a/src/lib/krb5/ccache/cc_kcm.c
+++ b/src/lib/krb5/ccache/cc_kcm.c
@@ -981,8 +981,10 @@ kcm_ptcursor_next(krb5_context context, krb5_cc_ptcursor cursor,
k5_buf_add_len(&req.reqbuf, id, KCM_UUID_LEN);
ret = kcmio_call(context, data->io, &req);
/* Continue if the cache has been deleted. */
- if (ret == KRB5_CC_END)
+ if (ret == KRB5_CC_END || ret == KRB5_FCC_NOFILE) {
+ ret = 0;
continue;
+ }
if (ret)
goto cleanup;
ret = kcmreq_get_name(&req, &name);