-/*
+/*
Copyright (c) 1995-1998 by Cisco systems, Inc.
Permission to use, copy, modify, and distribute this software for
/* Tacacs+ password lookup routine for those systems which don't have
setpwfile. Not for use on /etc/passwd files */
+
#include "tac_plus.h"
+
+#include <stdlib.h>
#include <pwd.h>
#include <string.h>
+#include "pw.h"
+#include "report.h"
+#include "main.h"
+
+
static struct passwd pw_passwd;
+struct passwd *tac_passwd_lookup TAC_ARGS((const char *name, const char *file));
+
struct passwd *
tac_passwd_lookup(name, file)
- char *name, *file;
+const char *name;
+const char *file;
{
FILE *passwd_fp = NULL;
if (passwd_fp) {
if (debug & DEBUG_PASSWD_FLAG)
- report(LOG_DEBUG, "tac_passwd_lookup: open %s %d",
+ report(LOG_DEBUG, "tac_passwd_lookup: open %s %d",
file, fileno(passwd_fp));
} else {
- report(LOG_ERR, "tac_passwd_lookup: cannot open file %s for reading",
+ report(LOG_ERR, "tac_passwd_lookup: cannot open file %s for reading",
file);
return(NULL);
}
pw_passwd.pw_name = uname;
pw_passwd.pw_passwd = password;
-#ifndef NO_PWAGE
+#ifdef HAVE_PASSWD_PW_AGE
pw_passwd.pw_age = NULL;
+#endif
+#ifdef HAVE_PASSWD_PW_COMMENT
pw_passwd.pw_comment = NULL;
-#endif /* NO_PWAGE */
+#endif
pw_passwd.pw_gecos = gecos;
pw_passwd.pw_dir = homedir;
pw_passwd.pw_shell = shell;
if (debug & DEBUG_PASSWD_FLAG)
- report(LOG_DEBUG, "tac_passwd_lookup: close %s %d",
+ report(LOG_DEBUG, "tac_passwd_lookup: close %s %d",
file, fileno(passwd_fp));
fclose(passwd_fp);
return(&pw_passwd);
/* no match found */
if (debug & DEBUG_PASSWD_FLAG)
- report(LOG_DEBUG, "tac_passwd_lookup: close %s %d",
+ report(LOG_DEBUG, "tac_passwd_lookup: close %s %d",
file, fileno(passwd_fp));
fclose(passwd_fp);
return(NULL);