/*
* Copyright 2000, International Business Machines Corporation and others.
* All Rights Reserved.
- *
+ *
* This software has been released under the terms of the IBM Public
* License. For details, see the LICENSE file in the top-level source
* directory or online at http://www.openafs.org/dl/license10.html
*/
-#include <syslog.h>
-#include <stdlib.h>
-#include <string.h>
-#include <pwd.h>
-#include <unistd.h>
-#include <errno.h>
#include <afsconfig.h>
#include <afs/param.h>
+#include <roken.h>
+
#include <security/pam_appl.h>
#include <security/pam_modules.h>
-
-#include <sys/param.h>
#include <afs/kautils.h>
+
#include "afs_message.h"
#include "afs_util.h"
int set_expires = 0; /* the default is to not to set the env variable */
int use_klog = 0;
int i;
- struct pam_conv *pam_convp = NULL;
+ PAM_CONST struct pam_conv *pam_convp = NULL;
char my_password_buf[256];
char *cell_ptr = NULL;
char sbuffer[100];
int torch_password = 1;
int auth_ok = 0;
char *lh;
- char *user = NULL;
+ PAM_CONST char *user = NULL;
int password_expires = -1;
char *reason = NULL;
struct passwd unix_pwd, *upwd = NULL;
pam_afs_syslog(LOG_ERR, PAMAFS_OTHERCELL,
"cell missing argument");
} else {
- cell_ptr = argv[i];
+ cell_ptr = (char *)argv[i];
pam_afs_syslog(LOG_INFO, PAMAFS_OTHERCELL, cell_ptr);
}
} else if (strcasecmp(argv[i], "no_unlog") == 0) {
pam_afs_syslog(LOG_DEBUG, PAMAFS_OPTIONS, nowarn, use_first_pass,
try_first_pass, ignore_uid, ignore_uid_id, 8, 8, 8, 8);
/* Try to get the user-interaction info, if available. */
- errcode = pam_get_item(pamh, PAM_CONV, (const void **)&pam_convp);
+ errcode = pam_get_item(pamh, PAM_CONV, (PAM_CONST void **)&pam_convp);
if (errcode != PAM_SUCCESS) {
if (logmask && LOG_MASK(LOG_DEBUG))
pam_afs_syslog(LOG_DEBUG, PAMAFS_NO_USER_INT);
/* Who are we trying to authenticate here? */
if ((errcode =
- pam_get_user(pamh, (const char **)&user,
+ pam_get_user(pamh, (PAM_CONST char **)&user,
"AFS username:")) != PAM_SUCCESS) {
pam_afs_syslog(LOG_ERR, PAMAFS_NOUSER, errcode);
RET(PAM_USER_UNKNOWN);
/* enhanced: use "ignore_uid <number>" to specify the largest uid
* which should be ignored by this module
*/
-#if defined(AFS_HPUX_ENV) || defined(AFS_DARWIN100_ENV)
-#if defined(AFS_HPUX110_ENV) || defined(AFS_DARWIN100_ENV)
+#if defined(AFS_HPUX_ENV) || defined(AFS_DARWIN100_ENV) || defined(AFS_SUN58_ENV)
+#if defined(AFS_HPUX110_ENV) || defined(AFS_DARWIN100_ENV) || defined(AFS_SUN58_ENV)
i = getpwnam_r(user, &unix_pwd, upwd_buf, sizeof(upwd_buf), &upwd);
#else /* AFS_HPUX110_ENV */
i = getpwnam_r(user, &unix_pwd, upwd_buf, sizeof(upwd_buf));
if (i == 0) /* getpwnam_r success */
upwd = &unix_pwd;
#endif /* AFS_HPUX110_ENV */
- if (ignore_uid && i == 0 && upwd->pw_uid <= ignore_uid_id) {
+ if (ignore_uid && i == 0 && upwd && upwd->pw_uid <= ignore_uid_id) {
pam_afs_syslog(LOG_INFO, PAMAFS_IGNORINGROOT, user);
RET(PAM_AUTH_ERR);
}
goto try_auth;
}
- /* pam_sm_authenticate should have set this
+ /* pam_sm_authenticate should have set this
* if (auth_ok && !got_authtok) {
* torch_password = 0;
* (void) pam_set_item(pamh, PAM_AUTHTOK, password);