From 686eb8de49c3e59a99cbd8f1e93cc0949a253621 Mon Sep 17 00:00:00 2001 From: Hartmut Reuter Date: Sat, 8 May 2004 05:45:36 +0000 Subject: [PATCH] aix-dynamic-auth-20040507 FIXES 4278 make dynamic auth work for aix 5 --- src/tsm41/aix41_auth.c | 31 ++++++++++++++++++++++--------- 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/src/tsm41/aix41_auth.c b/src/tsm41/aix41_auth.c index 9b6e59206..b9fa36e5a 100644 --- a/src/tsm41/aix41_auth.c +++ b/src/tsm41/aix41_auth.c @@ -29,6 +29,8 @@ RCSID #include #include +struct passwd *afs_getpwnam_int(char *, int); + int afs_authenticate(char *userName, char *response, int *reenter, char **message) { @@ -52,7 +54,12 @@ afs_authenticate(char *userName, char *response, int *reenter, char **message) return AUTH_FAILURE; } } - if ((pwd = getpwnam(userName)) == NULL) { +#ifdef AFS_AIX51_ENV + if ((pwd = afs_getpwnam_int(userName, 1)) == NULL) +#else + if ((pwd = getpwnam(userName)) == NULL) +#endif + { *message = (char *)malloc(256); sprintf(*message, "getpwnam for user failed\n"); return AUTH_FAILURE; @@ -136,6 +143,12 @@ afs_getgrnam(char *name) #ifdef AFS_AIX51_ENV struct passwd * afs_getpwnam(char *user) +{ + return (struct passwd *) afs_getpwnam_int(user, 0); +} + +struct passwd * +afs_getpwnam_int(char *user, int ignore) { static char name[64]; static char passwd[64]; @@ -145,6 +158,12 @@ afs_getpwnam(char *user) static struct passwd pwd; struct passwd *p; + pwd.pw_uid = 4294967294; + pwd.pw_gid = 4294967294; + strcpy((char *)&shell, "/bin/false"); + if (!user) + return &pwd; + while ((p = getpwent()) != NULL) { if (!strcmp(p->pw_name, user)) { strncpy(&name, p->pw_name, sizeof(name)); @@ -163,6 +182,8 @@ afs_getpwnam(char *user) } } endpwent(); + if (ignore && (p == NULL)) + return NULL; return &pwd; } #else @@ -173,19 +194,11 @@ afs_getpwnam(int id) } #endif -#ifdef AFS_AIX52_ENV -struct passwd * -afs_getpwuid(uid_t uid) -{ - return pwd; -} -#else int afs_getpwuid(char *name) { return NULL; } -#endif int afs_initialize(struct secmethod_table *meths) -- 2.39.5