diff options
author | Greg Hudson <ghudson@mit.edu> | 2020-11-21 01:41:41 -0500 |
---|---|---|
committer | Greg Hudson <ghudson@mit.edu> | 2021-01-08 12:14:38 -0500 |
commit | a1b5cf2429cf33d77a4fd0aa2849b3d3661f6e05 (patch) | |
tree | 20e7820f1159ada4aecc047ad59d8a484a88b62d | |
parent | 58b4b38e104f0a73b7ac5700c1715a22bbb4604b (diff) | |
download | krb5-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.c | 4 |
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); |