From 1eade690abb9cdc5ec90ede2871fb72599f87efb Mon Sep 17 00:00:00 2001 From: Assar Westerlund Date: Wed, 17 Nov 1999 03:11:56 +0000 Subject: [PATCH] (afslog_uid_int): don't look at the local realm at all. just use the realm from the ticket file. git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@7400 ec53bebd-3082-4978-b11e-865c3cabbd6b --- lib/kafs/afskrb5.c | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/lib/kafs/afskrb5.c b/lib/kafs/afskrb5.c index 602a7e604..6cd9ec93d 100644 --- a/lib/kafs/afskrb5.c +++ b/lib/kafs/afskrb5.c @@ -81,21 +81,27 @@ afslog_uid_int(kafs_data *data, const char *cell, const char *rh, uid_t uid, { krb5_error_code ret; CREDENTIALS c; - krb5_realm lrealm; /* local realm */ + krb5_principal princ; + krb5_realm *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_get_default_realm(d->context, &lrealm); - if(ret || (d->realm && strcmp(d->realm, lrealm) == 0)){ - free(lrealm); - lrealm = NULL; + ret = krb5_cc_get_principal (d->context, d->id, &princ); + if (ret) + return ret; + + trealm = krb5_princ_realm (d->context, princ); + + if (strcmp (d->realm, *trealm) == 0) { + trealm = NULL; + krb5_free_principal (d->context, princ); } - ret = _kafs_get_cred(data, cell, d->realm, lrealm, &c); - if(lrealm) - free(lrealm); + ret = _kafs_get_cred(data, cell, d->realm, *trealm, &c); + if(trealm) + krb5_free_principal (d->context, princ); if(ret == 0) ret = kafs_settoken(cell, uid, &c);