2
0
mirror of https://github.com/sudo-project/sudo.git synced 2025-09-03 15:55:40 +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() */ return; /* if the passwd is correct return() */
# endif /* HAVE_GETAUTHUID */ # endif /* HAVE_GETAUTHUID */
# ifdef HAVE_GETPRPWUID # ifdef HAVE_GETPRPWNAM
if (check_secureware(pass)) if (check_secureware(pass))
return; /* if the passwd is correct return() */ return; /* if the passwd is correct return() */
# endif /* HAVE_GETPRPWUID */ # endif /* HAVE_HAVE_GETPRPWNAM */
/* Normal UN*X password check */ /* Normal UN*X password check */
if (!strcmp(user_passwd, (char *) crypt(pass, user_passwd))) if (!strcmp(user_passwd, (char *) crypt(pass, user_passwd)))

View File

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

View File

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

View File

@@ -982,7 +982,7 @@ case "$host" in
;; ;;
*-*-hiuxmpp*) *-*-hiuxmpp*)
if test "$CHECKSHADOW" = "true"; then 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" CHECKSHADOW="false"
fi fi
;; ;;
@@ -992,7 +992,7 @@ case "$host" in
#STATIC_SUDO=true #STATIC_SUDO=true
if test "$CHECKSHADOW" = "true"; then 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" CHECKSHADOW="false"
fi fi
@@ -1077,7 +1077,7 @@ case "$host" in
SUDO_LDFLAGS="${SUDO_LDFLAGS} -Wl,-no_library_replacement" SUDO_LDFLAGS="${SUDO_LDFLAGS} -Wl,-no_library_replacement"
if test "$CHECKSHADOW" = "true"; then 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_MSG_CHECKING([for broken /usr/include/prot.h])
AC_TRY_COMPILE([ AC_TRY_COMPILE([
#include <sys/types.h> #include <sys/types.h>
@@ -1123,7 +1123,7 @@ case "$host" in
fi fi
if test "$CHECKSHADOW" = "true"; then 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" CHECKSHADOW="false"
fi fi
;; ;;
@@ -1153,7 +1153,7 @@ case "$host" in
;; ;;
*-*-sco*) *-*-sco*)
if test "$CHECKSHADOW" = "true"; then 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" CHECKSHADOW="false"
fi fi
;; ;;
@@ -1197,7 +1197,7 @@ if test "$CHECKSHADOW" = "true"; then
AC_CHECK_FUNC(getspnam, AC_DEFINE(HAVE_GETSPNAM) [CHECKSHADOW="false"]) AC_CHECK_FUNC(getspnam, AC_DEFINE(HAVE_GETSPNAM) [CHECKSHADOW="false"])
fi fi
if test "$CHECKSHADOW" = "true"; then 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 fi
dnl dnl

View File

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

View File

@@ -30,7 +30,7 @@ static char rcsid[] = "$Id$";
#include "config.h" #include "config.h"
#ifdef HAVE_GETPRPWUID #ifdef HAVE_GETPRPWNAM
#include <stdio.h> #include <stdio.h>
#ifdef STDC_HEADERS #ifdef STDC_HEADERS
@@ -84,4 +84,4 @@ int check_secureware(pass)
return(0); 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; int sudo_mode = MODE_RUN;
extern char ** environ; 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); (void) set_auth_parameters(argc, argv);
# ifdef HAVE_INITPRIVS # ifdef HAVE_INITPRIVS
initprivs(); initprivs();
# endif # endif
#endif /* HAVE_GETPRPWUID && HAVE_SET_AUTH_PARAMETERS */ #endif /* HAVE_GETPRPWNAM && HAVE_SET_AUTH_PARAMETERS */
Argv = argv; Argv = argv;
Argc = argc; Argc = argc;

View File

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