2
0
mirror of https://github.com/sudo-project/sudo.git synced 2025-09-02 07:15:27 +00:00

getprpwuid is broken in HP-UX 10.20 at least (it sleeps for 2 minutes if the

shadow files don't exist).
This commit is contained in:
Todd C. Miller
1998-10-21 23:50:10 +00:00
parent 929bff13f1
commit 7ffee3b997
8 changed files with 26 additions and 26 deletions

View File

@@ -583,10 +583,10 @@ static void check_passwd()
return; /* if the passwd is correct return() */
# endif /* HAVE_GETAUTHUID */
# ifdef HAVE_GETPRPWUID
# ifdef HAVE_GETPRPWNAM
if (check_secureware(pass))
return; /* if the passwd is correct return() */
# endif /* HAVE_GETPRPWUID */
# endif /* HAVE_HAVE_GETPRPWNAM */
/* Normal UN*X password check */
if (!strcmp(user_passwd, (char *) crypt(pass, user_passwd)))

View File

@@ -100,7 +100,7 @@
# undef _PASSWD_LEN
# define _PASSWD_LEN 256
#else
# ifdef HAVE_GETPRPWUID
# ifdef HAVE_GETPRPWNAM
# undef _PASSWD_LEN
# define _PASSWD_LEN AUTH_MAX_PASSWD_LENGTH
# else
@@ -115,8 +115,8 @@
# endif /* SHADOW_TYPE != SPW_NONE */
# endif /* PASS_MAX */
# endif /* !_PASSWD_LEN */
# endif /* HAVE_GETPRPWNAM */
#endif /* HAVE_KERB4 || HAVE_AFS || HAVE_DCE || HAVE_SKEY || HAVE_OPIE */
#endif /* HAVE_GETPRPWUID */
/*
* Some OS's lack these

View File

@@ -243,8 +243,8 @@
/* Define if you have getspnam(3). [SVR4-style shadow passwords] */
#undef HAVE_GETSPNAM
/* Define if you have getprpwuid(3). [SecureWare-style shadow passwords] */
#undef HAVE_GETPRPWUID
/* Define if you have getprpwnam(3). [SecureWare-style shadow passwords] */
#undef HAVE_GETPRPWNAM
/* Define if you have getspwuid(3). [HP-UX <= 9.X shadow passwords] */
#undef HAVE_GETSPWUID

View File

@@ -982,7 +982,7 @@ case "$host" in
;;
*-*-hiuxmpp*)
if test "$CHECKSHADOW" = "true"; then
AC_CHECK_LIB(sec, getprpwuid, AC_DEFINE(HAVE_GETPRPWUID) [SUDO_LIBS="${SUDO_LIBS} -lsec"; LIBS="${LIBS} -lsec"; SECUREWARE=1], AC_CHECK_LIB(security, getprpwuid, AC_DEFINE(HAVE_GETPRPWUID) [SUDO_LIBS="${SUDO_LIBS} -lsecurity"; LIBS="${LIBS} -lsecurity"; SECUREWARE=1]))
AC_CHECK_LIB(sec, getprpwnam, AC_DEFINE(HAVE_GETPRPWNAM) [SUDO_LIBS="${SUDO_LIBS} -lsec"; LIBS="${LIBS} -lsec"; SECUREWARE=1], AC_CHECK_LIB(security, getprpwnam, AC_DEFINE(HAVE_GETPRPWNAM) [SUDO_LIBS="${SUDO_LIBS} -lsecurity"; LIBS="${LIBS} -lsecurity"; SECUREWARE=1]))
CHECKSHADOW="false"
fi
;;
@@ -992,7 +992,7 @@ case "$host" in
#STATIC_SUDO=true
if test "$CHECKSHADOW" = "true"; then
AC_CHECK_LIB(sec, getprpwuid, AC_DEFINE(HAVE_GETPRPWUID) [SUDO_LIBS="${SUDO_LIBS} -lsec"; LIBS="${LIBS} -lsec"; SECUREWARE=1])
AC_CHECK_LIB(sec, getprpwnam, AC_DEFINE(HAVE_GETPRPWNAM) [SUDO_LIBS="${SUDO_LIBS} -lsec"; LIBS="${LIBS} -lsec"; SECUREWARE=1])
CHECKSHADOW="false"
fi
@@ -1077,7 +1077,7 @@ case "$host" in
SUDO_LDFLAGS="${SUDO_LDFLAGS} -Wl,-no_library_replacement"
if test "$CHECKSHADOW" = "true"; then
AC_CHECK_LIB(security, getprpwuid, AC_DEFINE(HAVE_GETPRPWUID) [SUDO_LIBS="${SUDO_LIBS} -lsecurity"; LIBS="${LIBS} -lsecurity"; SECUREWARE=1])
AC_CHECK_LIB(security, getprpwnam, AC_DEFINE(HAVE_GETPRPWNAM) [SUDO_LIBS="${SUDO_LIBS} -lsecurity"; LIBS="${LIBS} -lsecurity"; SECUREWARE=1])
AC_MSG_CHECKING([for broken /usr/include/prot.h])
AC_TRY_COMPILE([
#include <sys/types.h>
@@ -1123,7 +1123,7 @@ case "$host" in
fi
if test "$CHECKSHADOW" = "true"; then
AC_CHECK_LIB(sec, getprpwuid, AC_DEFINE(HAVE_GETPRPWUID) [SUDO_LIBS="${SUDO_LIBS} -lprot"; LIBS="${LIBS} -lprot"; OSDEFS="${OSDEFS} -D_AUDIT -D_ACL -DSecureWare"; SECUREWARE=1])
AC_CHECK_LIB(sec, getprpwnam, AC_DEFINE(HAVE_GETPRPWNAM) [SUDO_LIBS="${SUDO_LIBS} -lprot"; LIBS="${LIBS} -lprot"; OSDEFS="${OSDEFS} -D_AUDIT -D_ACL -DSecureWare"; SECUREWARE=1])
CHECKSHADOW="false"
fi
;;
@@ -1153,7 +1153,7 @@ case "$host" in
;;
*-*-sco*)
if test "$CHECKSHADOW" = "true"; then
AC_CHECK_LIB(prot, getprpwuid, AC_DEFINE(HAVE_GETPRPWUID) [SUDO_LIBS="${SUDO_LIBS} -lprot -lx"; LIBS="${LIBS} -lprot -lx"; SECUREWARE=1])
AC_CHECK_LIB(prot, getprpwnam, AC_DEFINE(HAVE_GETPRPWNAM) [SUDO_LIBS="${SUDO_LIBS} -lprot -lx"; LIBS="${LIBS} -lprot -lx"; SECUREWARE=1])
CHECKSHADOW="false"
fi
;;
@@ -1197,7 +1197,7 @@ if test "$CHECKSHADOW" = "true"; then
AC_CHECK_FUNC(getspnam, AC_DEFINE(HAVE_GETSPNAM) [CHECKSHADOW="false"])
fi
if test "$CHECKSHADOW" = "true"; then
AC_CHECK_FUNC(getprpwuid, AC_DEFINE(HAVE_GETPRPWUID) [CHECKSHADOW="false"; SECUREWARE=1], AC_CHECK_LIB(sec, getprpwuid, AC_DEFINE(HAVE_GETPRPWUID) [CHECKSHADOW="false"; SECUREWARE=1; SUDO_LIBS="${SUDO_LIBS} -lsec"; LIBS="${LIBS} -lsec"], AC_CHECK_LIB(security, getprpwuid, AC_DEFINE(HAVE_GETPRPWUID) [CHECKSHADOW="false"; SECUREWARE=1; SUDO_LIBS="${SUDO_LIBS} -lsecurity"; LIBS="${LIBS} -lsecurity"], AC_CHECK_LIB(prot, getprpwuid, AC_DEFINE(HAVE_GETPRPWUID) [CHECKSHADOW="false"; SECUREWARE=1; SUDO_LIBS="${SUDO_LIBS} -lprot"; LIBS="${LIBS} -lprot"]))))
AC_CHECK_FUNC(getprpwnam, AC_DEFINE(HAVE_GETPRPWNAM) [CHECKSHADOW="false"; SECUREWARE=1], AC_CHECK_LIB(sec, getprpwnam, AC_DEFINE(HAVE_GETPRPWNAM) [CHECKSHADOW="false"; SECUREWARE=1; SUDO_LIBS="${SUDO_LIBS} -lsec"; LIBS="${LIBS} -lsec"], AC_CHECK_LIB(security, getprpwnam, AC_DEFINE(HAVE_GETPRPWNAM) [CHECKSHADOW="false"; SECUREWARE=1; SUDO_LIBS="${SUDO_LIBS} -lsecurity"; LIBS="${LIBS} -lsecurity"], AC_CHECK_LIB(prot, getprpwnam, AC_DEFINE(HAVE_GETPRPWNAM) [CHECKSHADOW="false"; SECUREWARE=1; SUDO_LIBS="${SUDO_LIBS} -lprot"; LIBS="${LIBS} -lprot"]))))
fi
dnl

View File

@@ -53,14 +53,14 @@ static char rcsid[] = "$Id$";
#ifdef HAVE_GETSPNAM
# include <shadow.h>
#endif /* HAVE_GETSPNAM */
#ifdef HAVE_GETPRPWUID
#ifdef HAVE_GETPRPWNAM
# ifdef __hpux
# include <hpsecurity.h>
# else
# include <sys/security.h>
# endif /* __hpux */
# include <prot.h>
#endif /* HAVE_GETPRPWUID */
#endif /* HAVE_GETPRPWNAM */
#ifdef HAVE_GETPWANAM
# include <sys/label.h>
# include <sys/audit.h>
@@ -85,9 +85,9 @@ extern char *strdup __P((const char *));
/*
* Global variables (yuck)
*/
#if defined(HAVE_GETPRPWUID) && defined(__alpha)
#if defined(HAVE_GETPRPWNAM) && defined(__alpha)
int crypt_type = -1;
#endif /* HAVE_GETPRPWUID && __alpha */
#endif /* HAVE_GETPRPWNAM && __alpha */
/*
@@ -136,11 +136,11 @@ static char *sudo_getshell(pw_ent)
static char *sudo_getepw(pw_ent)
struct passwd *pw_ent;
{
#ifdef HAVE_GETPRPWUID
#ifdef HAVE_GETPRPWNAM
{
struct pr_passwd *spw_ent;
spw_ent = getprpwuid(pw_ent->pw_uid);
spw_ent = getprpwnam(pw_ent->pw_name);
if (spw_ent != NULL && spw_ent->ufld.fd_encrypt != NULL) {
# ifdef __alpha
crypt_type = spw_ent -> ufld.fd_oldcrypt;
@@ -148,7 +148,7 @@ static char *sudo_getepw(pw_ent)
return(spw_ent -> ufld.fd_encrypt);
}
}
#endif /* HAVE_GETPRPWUID */
#endif /* HAVE_GETPRPWNAM */
#ifdef HAVE_GETSPNAM
{
struct spwd *spw_ent;

View File

@@ -30,7 +30,7 @@ static char rcsid[] = "$Id$";
#include "config.h"
#ifdef HAVE_GETPRPWUID
#ifdef HAVE_GETPRPWNAM
#include <stdio.h>
#ifdef STDC_HEADERS
@@ -84,4 +84,4 @@ int check_secureware(pass)
return(0);
}
#endif /* HAVE_GETPRPWUID */
#endif /* HAVE_GETPRPWNAM */

4
sudo.c
View File

@@ -183,12 +183,12 @@ int main(argc, argv)
int sudo_mode = MODE_RUN;
extern char ** environ;
#if defined(HAVE_GETPRPWUID) && defined(HAVE_SET_AUTH_PARAMETERS)
#if defined(HAVE_GETPRPWNAM) && defined(HAVE_SET_AUTH_PARAMETERS)
(void) set_auth_parameters(argc, argv);
# ifdef HAVE_INITPRIVS
initprivs();
# endif
#endif /* HAVE_GETPRPWUID && HAVE_SET_AUTH_PARAMETERS */
#endif /* HAVE_GETPRPWNAM && HAVE_SET_AUTH_PARAMETERS */
Argv = argv;
Argc = argc;

View File

@@ -69,14 +69,14 @@ static char rcsid[] = "$Id$";
#include <sys/ioctl.h>
#endif /* HAVE_TERMIO_H */
#endif /* HAVE_TERMIOS_H */
#ifdef HAVE_GETPRPWUID
#ifdef HAVE_GETPRPWNAM
# ifdef __hpux
# include <hpsecurity.h>
# else
# include <sys/security.h>
# endif /* __hpux */
# include <prot.h> /* for AUTH_MAX_PASSWD_LENGTH */
#endif /* HAVE_GETPRPWUID */
#endif /* HAVE_GETPRPWNAM */
#include <pathnames.h>
#include "compat.h"