mirror of
https://github.com/sudo-project/sudo.git
synced 2025-09-02 23:35:36 +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() */
|
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)))
|
||||||
|
4
compat.h
4
compat.h
@@ -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_GETPRPWNAM */
|
||||||
#endif /* HAVE_KERB4 || HAVE_AFS || HAVE_DCE || HAVE_SKEY || HAVE_OPIE */
|
#endif /* HAVE_KERB4 || HAVE_AFS || HAVE_DCE || HAVE_SKEY || HAVE_OPIE */
|
||||||
#endif /* HAVE_GETPRPWUID */
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Some OS's lack these
|
* Some OS's lack these
|
||||||
|
@@ -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
|
||||||
|
12
configure.in
12
configure.in
@@ -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
|
||||||
|
14
getspwuid.c
14
getspwuid.c
@@ -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;
|
||||||
|
@@ -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
4
sudo.c
@@ -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;
|
||||||
|
@@ -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"
|
||||||
|
Reference in New Issue
Block a user