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