summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Peach <jpeach@samba.org>2007-05-23 20:31:28 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 12:22:45 -0500
commitf4ae28576376741a5402a286827a46c053db0ff7 (patch)
treeea00880459b82e677e2eb38ebc5dcc608d5e053a
parentb683f8137baa6d7d4ddb6db6fe4f7b2141abd071 (diff)
downloadsamba-f4ae28576376741a5402a286827a46c053db0ff7.tar.gz
samba-f4ae28576376741a5402a286827a46c053db0ff7.tar.bz2
samba-f4ae28576376741a5402a286827a46c053db0ff7.zip
r23095: Support systems that have their PAM headers in /usr/include/pam.
(This used to be commit f1e8de4b576b3954d456cb64c02417908bab8da4)
-rw-r--r--source3/auth/pampass.c4
-rw-r--r--source3/configure.in26
-rw-r--r--source3/lib/pam_errors.c4
-rw-r--r--source3/nsswitch/pam_winbind.h12
-rw-r--r--source3/pam_smbpass/general.h8
-rw-r--r--source3/pam_smbpass/pam_smb_acct.c8
-rw-r--r--source3/pam_smbpass/pam_smb_auth.c8
-rw-r--r--source3/pam_smbpass/pam_smb_passwd.c8
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 <security/pam_appl.h>
+#elif defined(HAVE_PAM_PAM_APPL_H)
+#include <pam/pam_appl.h>
+#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 <security/pam_appl.h>
#endif
+ #if HAVE_PAM_PAM_APPL_H
+ #include <pam/pam_appl.h>
+ #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 <security/pam_appl.h>
+#elif defined(HAVE_PAM_PAM_APPL_H)
+#include <pam/pam_appl.h>
+#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 <security/pam_appl.h>
+#elif defined(HAVE_PAM_PAM_APPL_H)
+#include <pam/pam_appl.h>
+#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 <security/pam_modules.h>
+#elif defined(HAVE_PAM_PAM_MODULES_H)
+#include <pam/pam_modules.h>
#endif
-#ifdef HAVE_SECURITY__PAM_MACROS_H
+#if defined(HAVE_SECURITY__PAM_MACROS_H)
#include <security/_pam_macros.h>
+#elif defined(HAVE_PAM__PAM_MACROS_H)
+#include <pam/_pam_macros.h>
#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 <security/pam_appl.h>
+#elif defined(HAVE_PAM_PAM_APPL_H)
+#include <pam/pam_appl.h>
+#endif
#endif /* LINUX */
+#if defined(HAVE_SECURITY_PAM_MODULES_H)
#include <security/pam_modules.h>
+#elif defined(HAVE_PAM_PAM_MODULES_H)
+#include <pam/pam_modules.h>
+#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 <security/pam_appl.h>
+#elif defined(HAVE_PAM_PAM_APPL_H)
+#include <pam/pam_appl.h>
+#endif
#endif /* LINUX */
+#if defined(HAVE_SECURITY_PAM_MODULES_H)
#include <security/pam_modules.h>
+#elif defined(HAVE_PAM_PAM_MODULES_H)
+#include <pam/pam_modules.h>
+#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 <security/pam_appl.h>
+#elif defined(HAVE_PAM_PAM_APPL_H)
+#include <pam/pam_appl.h>
+#endif
#endif /* LINUX */
+#if defined(HAVE_SECURITY_PAM_MODULES_H)
#include <security/pam_modules.h>
+#elif defined(HAVE_PAM_PAM_MODULES_H)
+#include <pam/pam_modules.h>
+#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 <security/pam_appl.h>
+#elif defined(HAVE_PAM_PAM_APPL_H)
+#include <pam/pam_appl.h>
+#endif
#endif
+#if defined(HAVE_SECURITY_PAM_MODULES_H)
#include <security/pam_modules.h>
+#elif defined(HAVE_PAM_PAM_MODULES_H)
+#include <pam/pam_modules.h>
+#endif
#include "general.h"