From: Greg Hudson Date: Sat, 21 Nov 2020 06:41:41 +0000 (-0500) Subject: Continue on KRB5_FCC_NOFILE in KCM cache iteration X-Git-Tag: krb5-1.20-beta1~132 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F1136%2Fhead;p=thirdparty%2Fkrb5.git 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. ticket: 8967 (new) tags: pullup target_version: 1.19 --- diff --git a/src/lib/krb5/ccache/cc_kcm.c b/src/lib/krb5/ccache/cc_kcm.c index a76a285d91..9093f894d1 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);