static cc_int32 ccache_store_credentials(cc_ccache_t io_ccache, const cc_credentials_union *in_credentials_union) { struct cc_ccache *c = (struct cc_ccache *)io_ccache; krb5_error_code ret; krb5_creds hcred; LOG_ENTRY(); if (in_credentials_union == NULL) return ccErrBadParam; if (in_credentials_union->version != cc_credentials_v5) return LOG_FAILURE(ccErrBadCredentialsVersion, "wrong version"); if (in_credentials_union->credentials.credentials_v5->client == NULL) return ccErrBadParam; update_time(&c->change_time); update_time(&context_change_time); make_cred_from_ccred(milcontext, in_credentials_union->credentials.credentials_v5, &hcred); ret = heim_krb5_cc_store_cred(milcontext, c->id, &hcred); heim_krb5_free_cred_contents(milcontext, &hcred); if (ret) return LOG_FAILURE(ccErrInvalidCCache, "store cred"); return ccNoError; }
static krb5_error_code KRB5_CALLCONV acc_get_next (krb5_context context, krb5_ccache id, krb5_cc_cursor *cursor, krb5_creds *creds) { cc_credentials_iterator_t iter = *cursor; cc_credentials_t cred; krb5_error_code ret; int32_t error; while (1) { error = (*iter->func->next)(iter, &cred); if (error) return translate_cc_error(context, error); if (cred->data->version == cc_credentials_v5) break; (*cred->func->release)(cred); } ret = make_cred_from_ccred(context, cred->data->credentials.credentials_v5, creds); (*cred->func->release)(cred); return ret; }