From f4ae28576376741a5402a286827a46c053db0ff7 Mon Sep 17 00:00:00 2001 From: James Peach Date: Wed, 23 May 2007 20:31:28 +0000 Subject: r23095: Support systems that have their PAM headers in /usr/include/pam. (This used to be commit f1e8de4b576b3954d456cb64c02417908bab8da4) --- source3/auth/pampass.c | 4 ++++ source3/configure.in | 26 +++++++++++++++++++------- source3/lib/pam_errors.c | 4 ++++ source3/nsswitch/pam_winbind.h | 12 ++++++++++-- source3/pam_smbpass/general.h | 8 ++++++++ source3/pam_smbpass/pam_smb_acct.c | 8 ++++++++ source3/pam_smbpass/pam_smb_auth.c | 8 ++++++++ source3/pam_smbpass/pam_smb_passwd.c | 8 ++++++++ 8 files changed, 69 insertions(+), 9 deletions(-) diff --git a/source3/auth/pampass.c b/source3/auth/pampass.c index ba11d2e8fc..a83e2bcb3f 100644 --- a/source3/auth/pampass.c +++ b/source3/auth/pampass.c @@ -41,7 +41,11 @@ * which determines what actions/limitations/allowances become affected. *********************************************************************/ +#if defined(HAVE_SECURITY_PAM_APPL_H) #include +#elif defined(HAVE_PAM_PAM_APPL_H) +#include +#endif /* * Structure used to communicate between the conversation function diff --git a/source3/configure.in b/source3/configure.in index 92a7299c0a..3716299d9e 100644 --- a/source3/configure.in +++ b/source3/configure.in @@ -4399,7 +4399,11 @@ AC_ARG_WITH(cifsmount, ################################################# -# check for a PAM clear-text auth, accounts, password and session support +# Check for a PAM clear-text auth, accounts, password +# and session support. Most PAM implementations keep their +# headers in /usr/include/security. Darwin keeps its in +# /usr/include/pam. + with_pam_for_crypt=no try_pam=no AC_MSG_CHECKING(whether to try PAM support) @@ -4419,10 +4423,13 @@ if test x"${try_pam}" != x"no";then use_pam=yes create_pam_modules=yes - AC_CHECK_HEADERS(security/pam_appl.h) - if test x"$ac_cv_header_security_pam_appl_h" != x"yes"; then + # Most systems have PAM headers in /usr/include/security, but Darwin + # has them in /usr/include/pam. + AC_CHECK_HEADERS(security/pam_appl.h pam/pam_appl.h) + if test x"$ac_cv_header_security_pam_appl_h" != x"yes" -a \ + x"$ac_cv_header_pam_pam_appl_h" != x"yes"; then if test x"${try_pam}" = x"yes";then - AC_MSG_ERROR([--with-pam=yes but security/pam_appl.h not found]) + AC_MSG_ERROR([--with-pam=yes but pam_appl.h not found]) fi use_pam=no create_pam_modules=no @@ -4437,14 +4444,18 @@ if test x"${try_pam}" != x"no";then create_pam_modules=no fi - AC_CHECK_HEADERS(security/pam_modules.h,,,[[ + AC_CHECK_HEADERS(security/pam_modules.h pam/pam_modules.h,,,[[ #if HAVE_SECURITY_PAM_APPL_H #include #endif + #if HAVE_PAM_PAM_APPL_H + #include + #endif ]]) - if test x"$ac_cv_header_security_pam_modules_h" = x"no"; then + if test x"$ac_cv_header_security_pam_modules_h" = x"no" -a \ + x"$ac_cv_header_pam_pam_modules_h" = x"no" ; then if test x"${try_pam}" = x"yes";then - AC_MSG_ERROR([--with-pam=yes but security/pam_modules.h not found]) + AC_MSG_ERROR([--with-pam=yes but pam_modules.h not found]) fi create_pam_modules=no fi @@ -4460,6 +4471,7 @@ if test x"${try_pam}" != x"no";then # this checks are optional, # we don't care about the results here AC_CHECK_HEADERS(security/pam_ext.h security/_pam_macros.h) + AC_CHECK_HEADERS(pam/pam_ext.h pam/_pam_macros.h) AC_CHECK_FUNC_EXT(pam_vsyslog,$PAM_LIBS) else AC_MSG_WARN([PAM support detected but PAM MODULES support is missing]) diff --git a/source3/lib/pam_errors.c b/source3/lib/pam_errors.c index 9d9a377a91..42931383ed 100644 --- a/source3/lib/pam_errors.c +++ b/source3/lib/pam_errors.c @@ -21,7 +21,11 @@ #include "includes.h" #ifdef WITH_PAM +#if defined(HAVE_SECURITY_PAM_APPL_H) #include +#elif defined(HAVE_PAM_PAM_APPL_H) +#include +#endif #if defined(PAM_AUTHTOK_RECOVERY_ERR) && !defined(PAM_AUTHTOK_RECOVER_ERR) #define PAM_AUTHTOK_RECOVER_ERR PAM_AUTHTOK_RECOVERY_ERR diff --git a/source3/nsswitch/pam_winbind.h b/source3/nsswitch/pam_winbind.h index 9015869a77..0e7688be15 100644 --- a/source3/nsswitch/pam_winbind.h +++ b/source3/nsswitch/pam_winbind.h @@ -23,7 +23,11 @@ /* Solaris always uses dynamic pam modules */ #define PAM_EXTERN extern +#if defined(HAVE_SECURITY_PAM_APPL_H) #include +#elif defined(HAVE_PAM_PAM_APPL_H) +#include +#endif #ifndef PAM_AUTHTOK_RECOVER_ERR #define PAM_AUTHTOK_RECOVER_ERR PAM_AUTHTOK_RECOVERY_ERR @@ -31,12 +35,16 @@ #endif /* defined(SUNOS5) || defined(SUNOS4) || defined(HPUX) || defined(FREEBSD) || defined(AIX) */ -#ifdef HAVE_SECURITY_PAM_MODULES_H +#if defined(HAVE_SECURITY_PAM_MODULES_H) #include +#elif defined(HAVE_PAM_PAM_MODULES_H) +#include #endif -#ifdef HAVE_SECURITY__PAM_MACROS_H +#if defined(HAVE_SECURITY__PAM_MACROS_H) #include +#elif defined(HAVE_PAM__PAM_MACROS_H) +#include #else /* Define required macros from (Linux PAM 0.68) security/_pam_macros.h */ #define _pam_drop_reply(/* struct pam_response * */ reply, /* int */ replies) \ diff --git a/source3/pam_smbpass/general.h b/source3/pam_smbpass/general.h index f84c254444..d3afb4c1fc 100644 --- a/source3/pam_smbpass/general.h +++ b/source3/pam_smbpass/general.h @@ -1,9 +1,17 @@ #ifndef LINUX /* This is only needed by modules in the Sun implementation. */ +#if defined(HAVE_SECURITY_PAM_APPL_H) #include +#elif defined(HAVE_PAM_PAM_APPL_H) +#include +#endif #endif /* LINUX */ +#if defined(HAVE_SECURITY_PAM_MODULES_H) #include +#elif defined(HAVE_PAM_PAM_MODULES_H) +#include +#endif #ifndef PAM_AUTHTOK_RECOVER_ERR #define PAM_AUTHTOK_RECOVER_ERR PAM_AUTHTOK_RECOVERY_ERR diff --git a/source3/pam_smbpass/pam_smb_acct.c b/source3/pam_smbpass/pam_smb_acct.c index 47bf059479..f3b20465ab 100644 --- a/source3/pam_smbpass/pam_smb_acct.c +++ b/source3/pam_smbpass/pam_smb_acct.c @@ -23,11 +23,19 @@ #ifndef LINUX /* This is only used in the Sun implementation. */ +#if defined(HAVE_SECURITY_PAM_APPL_H) #include +#elif defined(HAVE_PAM_PAM_APPL_H) +#include +#endif #endif /* LINUX */ +#if defined(HAVE_SECURITY_PAM_MODULES_H) #include +#elif defined(HAVE_PAM_PAM_MODULES_H) +#include +#endif #include "general.h" diff --git a/source3/pam_smbpass/pam_smb_auth.c b/source3/pam_smbpass/pam_smb_auth.c index df6d20e01a..ceb23c3633 100644 --- a/source3/pam_smbpass/pam_smb_auth.c +++ b/source3/pam_smbpass/pam_smb_auth.c @@ -24,11 +24,19 @@ #ifndef LINUX /* This is only used in the Sun implementation. */ +#if defined(HAVE_SECURITY_PAM_APPL_H) #include +#elif defined(HAVE_PAM_PAM_APPL_H) +#include +#endif #endif /* LINUX */ +#if defined(HAVE_SECURITY_PAM_MODULES_H) #include +#elif defined(HAVE_PAM_PAM_MODULES_H) +#include +#endif #include "general.h" diff --git a/source3/pam_smbpass/pam_smb_passwd.c b/source3/pam_smbpass/pam_smb_passwd.c index 79bcfb6ff0..cffee74562 100644 --- a/source3/pam_smbpass/pam_smb_passwd.c +++ b/source3/pam_smbpass/pam_smb_passwd.c @@ -29,10 +29,18 @@ and others (including FreeBSD). */ #ifndef LINUX +#if defined(HAVE_SECURITY_PAM_APPL_H) #include +#elif defined(HAVE_PAM_PAM_APPL_H) +#include +#endif #endif +#if defined(HAVE_SECURITY_PAM_MODULES_H) #include +#elif defined(HAVE_PAM_PAM_MODULES_H) +#include +#endif #include "general.h" -- cgit