- Portability fixes for Irix 5.3 (now compiles OK!)

- autoconf and other misc cleanups
This commit is contained in:
Damien Miller 1999-12-28 15:09:35 +11:00
parent 4ff2b9bf42
commit beb4ba5a68
13 changed files with 120 additions and 88 deletions

View File

@ -3,6 +3,8 @@
- NetBSD login.c compile fix from David Rankin - NetBSD login.c compile fix from David Rankin
<drankin@bohemians.lexington.ky.us> <drankin@bohemians.lexington.ky.us>
- Fully set ut_tv if present in utmp or utmpx - Fully set ut_tv if present in utmp or utmpx
- Portability fixes for Irix 5.3 (now compiles OK!)
- autoconf and other misc cleanups
19991227 19991227
- Automatically correct paths in manpages and configuration files. Patch - Automatically correct paths in manpages and configuration files. Patch

View File

@ -105,6 +105,11 @@ support. You will need libwrap.a and tcpd.h installed.
--with-md5-passwords will enable the use of MD5 passwords. Enable this --with-md5-passwords will enable the use of MD5 passwords. Enable this
if your operating system uses MD5 passwords without using PAM. if your operating system uses MD5 passwords without using PAM.
If you need to pass special options to the compiler or linker, you
can specify these as enviornment variables before running ./configure.
For example:
CFLAGS="-O -m486" LFLAGS="-s" ./configure
3. Configuration 3. Configuration
---------------- ----------------

View File

@ -85,7 +85,7 @@ gnome-ssh-askpass: gnome-ssh-askpass.c
$(CC) $(CFLAGS) $(GNOME_CFLAGS) -o $@ gnome-ssh-askpass.c $(GNOME_LIBS) $(CC) $(CFLAGS) $(GNOME_CFLAGS) -o $@ gnome-ssh-askpass.c $(GNOME_LIBS)
clean: clean:
rm -f $(OBJS) $(TARGETS) config.status config.cache config.log core \ rm -f *.o $(TARGETS) config.status config.cache config.log core \
*.1 *.8 sshd_config ssh_config *.1 *.8 sshd_config ssh_config
manpages: manpages:

6
README
View File

@ -12,9 +12,9 @@ http://www.openssh.com/
This port consists of the re-introduction of autoconf support, PAM This port consists of the re-introduction of autoconf support, PAM
support (for Linux and Solaris), EGD[1] support, and replacements support (for Linux and Solaris), EGD[1] support, and replacements
for OpenBSD library functions that are (regrettably) absent from for OpenBSD library functions that are (regrettably) absent from
other unices. This port has been best tested on Linux, though some other unices. This port has been best tested on Linux, Solaris and
Solaris support is beginning to filter in. This version actively HPUX, though support for AIX and Irix is underway. This version
tracks changes in the OpenBSD CVS repository. actively tracks changes in the OpenBSD CVS repository.
The PAM support is now more functional than the popular packages of The PAM support is now more functional than the popular packages of
commercial ssh-1.2.x. It checks "account" and "session" modules for commercial ssh-1.2.x. It checks "account" and "session" modules for

4
TODO
View File

@ -4,10 +4,6 @@
- Better documentation - Better documentation
- Port to other platforms
- Better testing on non-PAM systems
- Replace the horror in acconfig.h which tries to comphensate for the - Replace the horror in acconfig.h which tries to comphensate for the
lack of u_intXX_t types. There must be a better way. lack of u_intXX_t types. There must be a better way.

View File

@ -6,6 +6,9 @@
/* SSL directory. */ /* SSL directory. */
#undef ssldir #undef ssldir
/* Define if you want to disable PAM support */
#undef DISABLE_PAM
/* Define if you want to disable lastlog support */ /* Define if you want to disable lastlog support */
#undef DISABLE_LASTLOG #undef DISABLE_LASTLOG
@ -115,6 +118,9 @@
/* Specify default $PATH */ /* Specify default $PATH */
#undef USER_PATH #undef USER_PATH
/* Define if the inclusion of crypt.h breaks the build (e.g. Irix 5.x) */
#undef CRYPT_H_BREAKS_BUILD
@BOTTOM@ @BOTTOM@
/* ******************* Shouldn't need to edit below this line ************** */ /* ******************* Shouldn't need to edit below this line ************** */

View File

@ -9,9 +9,9 @@
#include "includes.h" #include "includes.h"
#ifndef HAVE_LIBPAM #ifndef USE_PAM
RCSID("$Id: auth-passwd.c,v 1.11 1999/12/24 23:11:29 damien Exp $"); RCSID("$Id: auth-passwd.c,v 1.12 1999/12/28 04:09:36 damien Exp $");
#include "packet.h" #include "packet.h"
#include "ssh.h" #include "ssh.h"
@ -19,12 +19,14 @@ RCSID("$Id: auth-passwd.c,v 1.11 1999/12/24 23:11:29 damien Exp $");
#include "xmalloc.h" #include "xmalloc.h"
#ifdef HAVE_SHADOW_H #ifdef HAVE_SHADOW_H
#include <shadow.h> # include <shadow.h>
#endif
#ifdef HAVE_MD5_PASSWORDS
#include "md5crypt.h"
#endif #endif
#if defined(HAVE_CRYPT_H) && !defined(CRYPT_H_BREAKS_BUILD)
# include <crypt.h>
#endif /* defined(HAVE_CRYPT_H) && !defined(CRYPT_H_BREAKS_BUILD) */
#if defined(HAVE_MD5_PASSWORDS) && !defined(HAVE_MD5_CRYPT)
# include "md5crypt.h"
#endif /* defined(HAVE_MD5_PASSWORDS) && !defined(HAVE_MD5_CRYPT) */
/* /*
* Tries to authenticate the user using password. Returns true if * Tries to authenticate the user using password. Returns true if
@ -101,4 +103,4 @@ auth_password(struct passwd * pw, const char *password)
/* Authentication is accepted if the encrypted passwords are identical. */ /* Authentication is accepted if the encrypted passwords are identical. */
return (strcmp(encrypted_password, pw_password) == 0); return (strcmp(encrypted_password, pw_password) == 0);
} }
#endif /* !HAVE_LIBPAM */ #endif /* !USE_PAM */

View File

@ -56,6 +56,12 @@ case "$host" in
*-*-solaris*) *-*-solaris*)
AC_DEFINE(USE_UTMPX) AC_DEFINE(USE_UTMPX)
;; ;;
*-*-irix5*)
AC_DEFINE(CRYPT_H_BREAKS_BUILD)
# CFLAGS="$CFLAGS -shared"
no_libsocket=1
no_libnsl=1
;;
esac esac
dnl Check for OpenSSL/SSLeay directories. dnl Check for OpenSSL/SSLeay directories.
@ -81,7 +87,6 @@ if test "$ssldir" != "/usr"; then
CFLAGS="$CFLAGS -I$ssldir/include" CFLAGS="$CFLAGS -I$ssldir/include"
LDFLAGS="$LDFLAGS -L$ssldir/lib" LDFLAGS="$LDFLAGS -L$ssldir/lib"
fi fi
LIBS="$LIBS -lssl -lcrypto"
AC_MSG_RESULT($ssldir) AC_MSG_RESULT($ssldir)
dnl Check for RSAref library. dnl Check for RSAref library.
@ -96,28 +101,20 @@ dnl Checks for libraries.
AC_CHECK_LIB(crypto, CRYPTO_lock, ,AC_MSG_ERROR([*** libcrypto missing - please install first ***])) AC_CHECK_LIB(crypto, CRYPTO_lock, ,AC_MSG_ERROR([*** libcrypto missing - please install first ***]))
AC_CHECK_LIB(z, deflate, ,AC_MSG_ERROR([*** zlib missing - please install first ***])) AC_CHECK_LIB(z, deflate, ,AC_MSG_ERROR([*** zlib missing - please install first ***]))
AC_CHECK_LIB(util, login, AC_DEFINE(HAVE_LIBUTIL_LOGIN) LIBS="$LIBS -lutil") AC_CHECK_LIB(util, login, AC_DEFINE(HAVE_LIBUTIL_LOGIN) LIBS="$LIBS -lutil")
AC_CHECK_LIB(nsl, yp_match, , ) AC_CHECK_LIB(crypt, crypt, , )
AC_CHECK_LIB(socket, main, , )
dnl Use ip address instead of hostname in $DISPLAY if test -z "$no_libsocket" ; then
AC_ARG_WITH(pam, AC_CHECK_LIB(nsl, yp_match, , )
[ --without-pam Disable PAM support ], fi
[ if test -z "$no_libnsl" ; then
if test "x$withval" != "xno" ; then AC_CHECK_LIB(socket, main, , )
no_pam=1
fi
]
)
if test -z "$no_pam" ; then
AC_CHECK_LIB(dl, dlopen, , )
AC_CHECK_LIB(pam, pam_authenticate, , )
fi fi
dnl Checks for header files. dnl Checks for header files.
AC_CHECK_HEADERS(endian.h lastlog.h login.h maillock.h netgroup.h paths.h poll.h pty.h shadow.h sys/bsdtty.h sys/poll.h sys/select.h sys/stropts.h sys/time.h sys/ttcompat.h util.h utmp.h utmpx.h) AC_CHECK_HEADERS(bstring.h crypt.h endian.h lastlog.h login.h maillock.h netdb.h netgroup.h paths.h poll.h pty.h shadow.h security/pam_appl.h sys/bsdtty.h sys/cdefs.h sys/poll.h sys/select.h sys/stropts.h sys/time.h sys/ttcompat.h util.h utmp.h utmpx.h)
dnl Checks for library functions. dnl Checks for library functions.
AC_CHECK_FUNCS(arc4random getpagesize _getpty innetgr mkdtemp openpty setenv seteuid setlogin setproctitle setreuid snprintf strlcat strlcpy updwtmpx vsnprintf) AC_CHECK_FUNCS(arc4random getpagesize _getpty innetgr md5_crypt mkdtemp openpty setenv seteuid setlogin setproctitle setreuid snprintf strlcat strlcpy updwtmpx vsnprintf)
AC_CHECK_FUNC(login, AC_CHECK_FUNC(login,
[AC_DEFINE(HAVE_LOGIN)], [AC_DEFINE(HAVE_LOGIN)],
@ -180,9 +177,22 @@ AC_TRY_COMPILE(
[AC_MSG_RESULT(no)] [AC_MSG_RESULT(no)]
) )
dnl Check PAM strerror arguments AC_ARG_WITH(pam,
AC_MSG_CHECKING([whether pam_strerror takes only one argument]) [ --without-pam Disable PAM support ],
AC_TRY_COMPILE( [
if test "x$withval" = "xno" ; then
no_pam=1
AC_DEFINE(DISABLE_PAM)
fi
]
)
if test -z "$no_pam" -a "x$ac_cv_header_security_pam_appl_h" = "xyes" ; then
AC_CHECK_LIB(dl, dlopen, , )
LIBS="$LIBS -lpam"
dnl Check PAM strerror arguments
AC_MSG_CHECKING([whether pam_strerror takes only one argument])
AC_TRY_COMPILE(
[ [
#include <stdlib.h> #include <stdlib.h>
#include <security/pam_appl.h> #include <security/pam_appl.h>
@ -193,7 +203,8 @@ AC_TRY_COMPILE(
AC_DEFINE(HAVE_OLD_PAM) AC_DEFINE(HAVE_OLD_PAM)
AC_MSG_RESULT(yes) AC_MSG_RESULT(yes)
] ]
) )
fi
AC_MSG_CHECKING([whether to build GNOME ssh-askpass]) AC_MSG_CHECKING([whether to build GNOME ssh-askpass])
dnl Check whether user wants GNOME ssh-askpass dnl Check whether user wants GNOME ssh-askpass
@ -303,17 +314,19 @@ AC_ARG_WITH(lastlog,
fi fi
done done
if test -z "$gotlastlog" ; then if test -z "$gotlastlog" ; then
AC_MSG_WARN([*** Cannot find lastlog ***]) AC_MSG_RESULT(not found)
nolastlog=1 nolastlog=1
else else
if test "x$gotlastlog" = "xdir" ; then if test "x$gotlastlog" = "xdir" ; then
AC_MSG_RESULT(${lastlog}/)
AC_DEFINE(LASTLOG_IS_DIR) AC_DEFINE(LASTLOG_IS_DIR)
AC_MSG_WARN([*** Directory-based lastlogs are not yet supported ***]) AC_MSG_WARN([*** Directory-based lastlogs are not yet supported ***])
nolastlog=1 nolastlog=1
fi else
AC_MSG_RESULT($lastlog) AC_MSG_RESULT($lastlog)
AC_DEFINE_UNQUOTED(LASTLOG_LOCATION, "$lastlog") AC_DEFINE_UNQUOTED(LASTLOG_LOCATION, "$lastlog")
fi fi
fi
] ]
) )

View File

@ -18,7 +18,11 @@
#endif #endif
#ifdef HAVE_MAILLOCK_H #ifdef HAVE_MAILLOCK_H
#include <maillock.h> # include <maillock.h> /* For _PATH_MAILDIR */
#endif
#ifdef HAVE_SYS_CDEFS_H
# include <sys/cdefs.h> /* For __P() */
#endif #endif
#ifndef SHUT_RDWR #ifndef SHUT_RDWR
@ -205,3 +209,8 @@ enum
# define _PATH_RSH RSH_PATH # define _PATH_RSH RSH_PATH
# endif /* RSH_PATH */ # endif /* RSH_PATH */
#endif /* _PATH_RSH */ #endif /* _PATH_RSH */
#if defined(HAVE_SECURITY_PAM_APPL_H) && !defined(DISABLE_PAM)
# define USE_PAM
#endif /* defined(HAVE_SECURITY_PAM_APPL_H) && !defined(DISABLE_PAM) */

View File

@ -52,9 +52,15 @@ static /**/const char *const rcsid[] = { (char *)rcsid, "\100(#)" msg }
#include <time.h> #include <time.h>
#include <dirent.h> #include <dirent.h>
#ifdef HAVE_BSTRING_H
# include <bstring.h>
#endif
#ifdef HAVE_NETGROUP_H #ifdef HAVE_NETGROUP_H
# include <netgroup.h> # include <netgroup.h>
#endif #endif
#ifdef HAVE_NETDB_H
# include <netdb.h>
#endif
#ifdef HAVE_PATHS_H #ifdef HAVE_PATHS_H
# include <paths.h> # include <paths.h>
#endif #endif
@ -70,7 +76,7 @@ static /**/const char *const rcsid[] = { (char *)rcsid, "\100(#)" msg }
#ifdef HAVE_SYS_BSDTTY_H #ifdef HAVE_SYS_BSDTTY_H
# include <sys/bsdtty.h> # include <sys/bsdtty.h>
#endif #endif
#ifdef HAVE_LIBPAM #ifdef USE_PAM
# include <security/pam_appl.h> # include <security/pam_appl.h>
#endif #endif

View File

@ -17,7 +17,7 @@
#include "config.h" #include "config.h"
#ifdef HAVE_MD5_PASSWORDS #if defined(HAVE_MD5_PASSWORDS) && !defined(HAVE_MD5_CRYPT)
#include <unistd.h> #include <unistd.h>
#include <string.h> #include <string.h>
@ -163,4 +163,4 @@ md5_crypt(const char *pw, const char *salt)
return passwd; return passwd;
} }
#endif /* HAVE_MD5_PASSWORDS */ #endif /* defined(HAVE_MD5_PASSWORDS) && !defined(HAVE_MD5_CRYPT) */

View File

@ -20,18 +20,11 @@
#include "config.h" #include "config.h"
#include <unistd.h> #if defined(HAVE_MD5_PASSWORDS) && !defined(HAVE_MD5_CRYPT)
#include <string.h>
#ifdef HAVE_OPENSSL
#include <openssl/md5.h>
#endif
#ifdef HAVE_SSL
#include <ssl/md5.h>
#endif
int is_md5_salt(const char *salt); int is_md5_salt(const char *salt);
char *md5_crypt(const char *pw, const char *salt); char *md5_crypt(const char *pw, const char *salt);
#endif /* defined(HAVE_MD5_PASSWORDS) && !defined(HAVE_MD5_CRYPT) */
#endif /* MD5CRYPT_H */ #endif /* MD5CRYPT_H */

52
sshd.c
View File

@ -11,7 +11,7 @@
*/ */
#include "includes.h" #include "includes.h"
RCSID("$Id: sshd.c,v 1.45 1999/12/26 23:55:23 damien Exp $"); RCSID("$Id: sshd.c,v 1.46 1999/12/28 04:09:36 damien Exp $");
#ifdef HAVE_POLL_H #ifdef HAVE_POLL_H
# include <poll.h> # include <poll.h>
@ -143,7 +143,7 @@ void do_child(const char *command, struct passwd * pw, const char *term,
const char *display, const char *auth_proto, const char *display, const char *auth_proto,
const char *auth_data, const char *ttyname); const char *auth_data, const char *ttyname);
#ifdef HAVE_LIBPAM #ifdef USE_PAM
static int pamconv(int num_msg, const struct pam_message **msg, static int pamconv(int num_msg, const struct pam_message **msg,
struct pam_response **resp, void *appdata_ptr); struct pam_response **resp, void *appdata_ptr);
int do_pam_auth(const char *user, const char *password); int do_pam_auth(const char *user, const char *password);
@ -301,7 +301,7 @@ void do_pam_session(char *username, char *ttyname)
if (pam_retval != PAM_SUCCESS) if (pam_retval != PAM_SUCCESS)
fatal("PAM session setup failed: %.200s", PAM_STRERROR((pam_handle_t *)pamh, pam_retval)); fatal("PAM session setup failed: %.200s", PAM_STRERROR((pam_handle_t *)pamh, pam_retval));
} }
#endif /* HAVE_LIBPAM */ #endif /* USE_PAM */
/* /*
* Signal handler for SIGHUP. Sshd execs itself when it receives SIGHUP; * Signal handler for SIGHUP. Sshd execs itself when it receives SIGHUP;
@ -952,7 +952,7 @@ main(int ac, char **av)
/* The connection has been terminated. */ /* The connection has been terminated. */
verbose("Closing connection to %.100s", remote_ip); verbose("Closing connection to %.100s", remote_ip);
#ifdef HAVE_LIBPAM #ifdef USE_PAM
{ {
int retval; int retval;
@ -967,7 +967,7 @@ main(int ac, char **av)
fatal_remove_cleanup(&pam_cleanup_proc, NULL); fatal_remove_cleanup(&pam_cleanup_proc, NULL);
} }
} }
#endif /* HAVE_LIBPAM */ #endif /* USE_PAM */
packet_close(); packet_close();
exit(0); exit(0);
@ -1285,7 +1285,7 @@ do_authentication(char *user)
pwcopy.pw_shell = xstrdup(pw->pw_shell); pwcopy.pw_shell = xstrdup(pw->pw_shell);
pw = &pwcopy; pw = &pwcopy;
#ifdef HAVE_LIBPAM #ifdef USE_PAM
{ {
int pam_retval; int pam_retval;
@ -1313,11 +1313,11 @@ do_authentication(char *user)
#ifdef KRB4 #ifdef KRB4
(!options.kerberos_authentication || options.kerberos_or_local_passwd) && (!options.kerberos_authentication || options.kerberos_or_local_passwd) &&
#endif /* KRB4 */ #endif /* KRB4 */
#ifdef HAVE_LIBPAM #ifdef USE_PAM
do_pam_auth(pw->pw_name, "")) { do_pam_auth(pw->pw_name, "")) {
#else /* HAVE_LIBPAM */ #else /* USE_PAM */
auth_password(pw, "")) { auth_password(pw, "")) {
#endif /* HAVE_LIBPAM */ #endif /* USE_PAM */
/* Authentication with empty password succeeded. */ /* Authentication with empty password succeeded. */
log("Login for user %s from %.100s, accepted without authentication.", log("Login for user %s from %.100s, accepted without authentication.",
pw->pw_name, get_remote_ipaddr()); pw->pw_name, get_remote_ipaddr());
@ -1457,9 +1457,9 @@ do_authloop(struct passwd * pw)
authenticated = auth_rhosts(pw, client_user); authenticated = auth_rhosts(pw, client_user);
snprintf(user, sizeof user, " ruser %s", client_user); snprintf(user, sizeof user, " ruser %s", client_user);
#ifndef HAVE_LIBPAM #ifndef USE_PAM
xfree(client_user); xfree(client_user);
#endif /* HAVE_LIBPAM */ #endif /* USE_PAM */
break; break;
case SSH_CMSG_AUTH_RHOSTS_RSA: case SSH_CMSG_AUTH_RHOSTS_RSA:
@ -1492,9 +1492,9 @@ do_authloop(struct passwd * pw)
BN_clear_free(client_host_key_n); BN_clear_free(client_host_key_n);
snprintf(user, sizeof user, " ruser %s", client_user); snprintf(user, sizeof user, " ruser %s", client_user);
#ifndef HAVE_LIBPAM #ifndef USE_PAM
xfree(client_user); xfree(client_user);
#endif /* HAVE_LIBPAM */ #endif /* USE_PAM */
break; break;
case SSH_CMSG_AUTH_RSA: case SSH_CMSG_AUTH_RSA:
@ -1523,13 +1523,13 @@ do_authloop(struct passwd * pw)
password = packet_get_string(&dlen); password = packet_get_string(&dlen);
packet_integrity_check(plen, 4 + dlen, type); packet_integrity_check(plen, 4 + dlen, type);
#ifdef HAVE_LIBPAM #ifdef USE_PAM
/* Do PAM auth with password */ /* Do PAM auth with password */
authenticated = do_pam_auth(pw->pw_name, password); authenticated = do_pam_auth(pw->pw_name, password);
#else /* HAVE_LIBPAM */ #else /* USE_PAM */
/* Try authentication with the password. */ /* Try authentication with the password. */
authenticated = auth_password(pw, password); authenticated = auth_password(pw, password);
#endif /* HAVE_LIBPAM */ #endif /* USE_PAM */
memset(password, 0, strlen(password)); memset(password, 0, strlen(password));
xfree(password); xfree(password);
break; break;
@ -1595,13 +1595,13 @@ do_authloop(struct passwd * pw)
get_remote_port(), get_remote_port(),
user); user);
#ifndef HAVE_LIBPAM #ifndef USE_PAM
if (authenticated) if (authenticated)
return; return;
if (attempt > AUTH_FAIL_MAX) if (attempt > AUTH_FAIL_MAX)
packet_disconnect(AUTH_FAIL_MSG, pw->pw_name); packet_disconnect(AUTH_FAIL_MSG, pw->pw_name);
#else /* HAVE_LIBPAM */ #else /* USE_PAM */
if (authenticated) { if (authenticated) {
do_pam_account(pw->pw_name, client_user); do_pam_account(pw->pw_name, client_user);
@ -1617,7 +1617,7 @@ do_authloop(struct passwd * pw)
packet_disconnect(AUTH_FAIL_MSG, pw->pw_name); packet_disconnect(AUTH_FAIL_MSG, pw->pw_name);
} }
#endif /* HAVE_LIBPAM */ #endif /* USE_PAM */
/* Send a message indicating that the authentication attempt failed. */ /* Send a message indicating that the authentication attempt failed. */
packet_start(SSH_SMSG_FAILURE); packet_start(SSH_SMSG_FAILURE);
@ -1823,10 +1823,10 @@ do_authenticated(struct passwd * pw)
/* Indicate that we now have a pty. */ /* Indicate that we now have a pty. */
have_pty = 1; have_pty = 1;
#ifdef HAVE_LIBPAM #ifdef USE_PAM
/* do the pam_open_session since we have the pty */ /* do the pam_open_session since we have the pty */
do_pam_session(pw->pw_name,ttyname); do_pam_session(pw->pw_name,ttyname);
#endif /* HAVE_LIBPAM */ #endif /* USE_PAM */
break; break;
@ -2194,7 +2194,7 @@ do_exec_pty(const char *command, int ptyfd, int ttyfd,
snprintf(line, sizeof line, "%.200s/.hushlogin", pw->pw_dir); snprintf(line, sizeof line, "%.200s/.hushlogin", pw->pw_dir);
quiet_login = stat(line, &st) >= 0; quiet_login = stat(line, &st) >= 0;
#ifdef HAVE_LIBPAM #ifdef USE_PAM
/* output the results of the pamconv() */ /* output the results of the pamconv() */
if (!quiet_login && pamconv_msg != NULL) if (!quiet_login && pamconv_msg != NULL)
fprintf(stderr, pamconv_msg); fprintf(stderr, pamconv_msg);
@ -2382,7 +2382,7 @@ do_child(const char *command, struct passwd * pw, const char *term,
struct stat st; struct stat st;
char *argv[10]; char *argv[10];
#ifndef HAVE_LIBPAM /* pam_nologin handles this */ #ifndef USE_PAM /* pam_nologin handles this */
/* Check /etc/nologin. */ /* Check /etc/nologin. */
f = fopen("/etc/nologin", "r"); f = fopen("/etc/nologin", "r");
if (f) { if (f) {
@ -2393,7 +2393,7 @@ do_child(const char *command, struct passwd * pw, const char *term,
if (pw->pw_uid != 0) if (pw->pw_uid != 0)
exit(254); exit(254);
} }
#endif /* HAVE_LIBPAM */ #endif /* USE_PAM */
#ifdef HAVE_SETLOGIN #ifdef HAVE_SETLOGIN
/* Set login name in the kernel. */ /* Set login name in the kernel. */
@ -2498,7 +2498,7 @@ do_child(const char *command, struct passwd * pw, const char *term,
} }
#endif /* KRB4 */ #endif /* KRB4 */
#ifdef HAVE_LIBPAM #ifdef USE_PAM
/* Pull in any environment variables that may have been set by PAM. */ /* Pull in any environment variables that may have been set by PAM. */
{ {
char *equals, var_name[512], var_val[512]; char *equals, var_name[512], var_val[512];
@ -2517,7 +2517,7 @@ do_child(const char *command, struct passwd * pw, const char *term,
} }
} }
} }
#endif /* HAVE_LIBPAM */ #endif /* USE_PAM */
if (xauthfile) if (xauthfile)
child_set_env(&env, &envsize, "XAUTHORITY", xauthfile); child_set_env(&env, &envsize, "XAUTHORITY", xauthfile);