krb5 commit [krb5-1.19]: Continue on KRB5_FCC_NOFILE in KCM cache iteration

Greg Hudson <[email protected]>
Newsgroups gmane.comp.encryption.kerberos.cvs
Message-ID <[email protected]>
https://github.com/krb5/krb5/commit/a1b5cf2429cf33d77a4fd0aa2849b3d3661f6e05
commit a1b5cf2429cf33d77a4fd0aa2849b3d3661f6e05
Author: Greg Hudson <[email protected]>
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);
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.