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:
4
check.c
4
check.c
@@ -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)))
|
||||
|
4
compat.h
4
compat.h
@@ -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
|
||||
|
@@ -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
|
||||
|
12
configure.in
12
configure.in
@@ -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
|
||||
|
14
getspwuid.c
14
getspwuid.c
@@ -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;
|
||||
|
@@ -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
4
sudo.c
@@ -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;
|
||||
|
@@ -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"
|
||||
|
Reference in New Issue
Block a user