/* * Function: Restore the saved credentials. * * c - Pointer to saved credential cache. * * pname - Principal name of session. * * pinstance - Principal instance of session. * * ncred - Number of credentials saved. */ static void pop_credentials(CREDENTIALS *c, char *pname, char *pinstance, int ncred) { #ifdef KRB4 int i; if (pname[0]) in_tkt(pname, pinstance); else dest_tkt(); if (ncred <= 0) return; for (i = 0; i < ncred; i++) { krb_save_credentials(c[i].service, c[i].instance, c[i].realm, c[i].session, c[i].lifetime, c[i].kvno, &(c[i].ticket_st), c[i].issue_date); } free(c); #endif #ifdef KRB5 /* FIXME */ return; #endif }
int v4_save_credentials(const char *sname, const char *sinstance, const char *srealm, unsigned char *session, int lifetime, int kvno, KTEXT ticket, int32_t issue_date) { int i; char *vname, *vinstance, *vrealm; vname = xstrdup(sname); if (vname == NULL) { return KRB5KRB_ERR_GENERIC; } vinstance = xstrdup(sinstance); if (vinstance == NULL) { xstrfree(vname); return KRB5KRB_ERR_GENERIC; } vrealm = xstrdup(srealm); if (vrealm == NULL) { xstrfree(vinstance); xstrfree(vname); return KRB5KRB_ERR_GENERIC; } #ifdef HAVE_KRB_SAVE_CREDENTIALS i = krb_save_credentials(vname, vinstance, vrealm, session, lifetime, kvno, ticket, issue_date); #elif defined(HAVE_SAVE_CREDENTIALS) i = save_credentials(vname, vinstance, vrealm, session, lifetime, kvno, ticket, issue_date); #else #error "Don't know how to save v4 credentials for your Kerberos IV implementation!" #endif xstrfree(vrealm); xstrfree(vinstance); xstrfree(vname); return i; }