--- heimdal-1.3.1/kcm/cache.c.orig 2009-11-21 16:41:51.000000000 +0100 +++ heimdal-1.3.1/kcm/cache.c 2009-12-07 14:18:52.608508518 +0100 @@ -533,7 +533,7 @@ ret = KRB5_CC_NOTFOUND; - for (c = &ccache->creds; *c != NULL; c = &(*c)->next) { + for (c = &ccache->creds; *c != NULL; ) { if (krb5_compare_creds(context, whichfields, mcreds, &(*c)->cred)) { struct kcm_creds *cred = *c; @@ -541,7 +541,8 @@ krb5_free_cred_contents(context, &cred->cred); free(cred); ret = 0; - } + } else + c = &(*c)->next; } return ret;