krb5 commit [krb5-1.19]: Continue on KRB5_FCC_NOFILE in KCM cache iteration
Greg Hudson
ghudson at mit.edu
Fri Jan 8 12:52:56 EST 2021
https://github.com/krb5/krb5/commit/a1b5cf2429cf33d77a4fd0aa2849b3d3661f6e05
commit a1b5cf2429cf33d77a4fd0aa2849b3d3661f6e05
Author: Greg Hudson <ghudson at mit.edu>
Date: Sat Nov 21 01:41:41 2020 -0500
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
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);
More information about the cvs-krb5
mailing list