ABORT_WITH(tt, code);
for (i = 0; i < aname->namelist_len; i++) {
- code = NameToID(tt, aname->namelist_val[i], &aid->idlist_val[i]);
+ char vname[256];
+ char *nameinst, *cell;
+
+ strncpy(vname, aname->namelist_val[i], sizeof(vname));
+ vname[sizeof(vname)-1] ='\0';
+
+ nameinst = vname;
+ cell = strchr(vname, '@');
+ if (cell) {
+ *cell = '\0';
+ cell++;
+ }
+
+ if (cell && afs_is_foreign_ticket_name(nameinst,NULL,cell,pr_realmName))
+ code = NameToID(tt, aname->namelist_val[i], &aid->idlist_val[i]);
+ else
+ code = NameToID(tt, nameinst, &aid->idlist_val[i]);
+
if (code != PRSUCCESS)
aid->idlist_val[i] = ANONYMOUSID;
osi_audit(PTS_NmToIdEvent, code, AUD_STR,
foreign = 1;
#if defined(AFS_ATHENA_STDENV) || defined(AFS_KERBREALM_ENV)
- if (!foreign) {
+ if (foreign) {
static char local_realms[AFS_NUM_LREALMS][AFS_REALM_SZ];
static int num_lrealms = -1;
int lrealm_match, i;