static int afslog_uid_int(struct kafs_data *data, const char *cell, const char *realm_hint, uid_t uid, const char *homedir) { int ret; struct kafs_token kt; char name[ANAME_SZ]; char inst[INST_SZ]; char realm[REALM_SZ]; kt.ticket = NULL; if (cell == 0 || cell[0] == 0) return _kafs_afslog_all_local_cells (data, uid, homedir); /* Extract realm from ticket file. */ ret = krb_get_tf_fullname(tkt_string(), name, inst, realm); if (ret != KSUCCESS) return ret; kt.ticket = NULL; ret = _kafs_get_cred(data, cell, realm_hint, realm, uid, &kt); if (ret == 0) { ret = kafs_settoken_rxkad(cell, &kt.ct, kt.ticket, kt.ticket_len); free(kt.ticket); } return ret; }
static krb5_error_code afslog_uid_int(struct kafs_data *data, const char *cell, const char *rh, uid_t uid, const char *homedir) { krb5_error_code ret; struct kafs_token kt; krb5_principal princ; const char *trealm; /* ticket realm */ struct krb5_kafs_data *d = data->data; if (cell == 0 || cell[0] == 0) return _kafs_afslog_all_local_cells (data, uid, homedir); ret = krb5_cc_get_principal (d->context, d->id, &princ); if (ret) return ret; trealm = krb5_principal_get_realm (d->context, princ); kt.ticket = NULL; ret = _kafs_get_cred(data, cell, d->realm, trealm, uid, &kt); krb5_free_principal (d->context, princ); if(ret == 0) { ret = kafs_settoken_rxkad(cell, &kt.ct, kt.ticket, kt.ticket_len); free(kt.ticket); } return ret; }