summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLukas Slebodnik <lslebodn@redhat.com>2014-05-27 23:55:17 +0200
committerJakub Hrozek <jhrozek@redhat.com>2014-06-03 10:01:15 +0200
commit683e1f67d08be7165ea456d4594c4c8a4eddc9b3 (patch)
tree97841eec89ba1708d55c874b64d660c3390a3614
parent78eae10aa035bc0e0996189b9d11c8db4904a98d (diff)
downloadsssd-683e1f67d08be7165ea456d4594c4c8a4eddc9b3.tar.gz
sssd-683e1f67d08be7165ea456d4594c4c8a4eddc9b3.tar.xz
sssd-683e1f67d08be7165ea456d4594c4c8a4eddc9b3.zip
PAM: Define compatible macros for some functions.
Functions pam_vsyslog and pam_modutil_getlogin are not available in openpam. This patch conditionally define macros for these function if they are not available. Compatible macros use standard functions vsyslog, getlogin Reviewed-by: Sumit Bose <sbose@redhat.com>
-rw-r--r--Makefile.am3
-rw-r--r--src/external/pam.m49
-rw-r--r--src/sss_client/pam_sss.c4
-rw-r--r--src/sss_client/sss_pam_compat.h45
4 files changed, 58 insertions, 3 deletions
diff --git a/Makefile.am b/Makefile.am
index 0fa613505..f64c77a5b 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1922,7 +1922,8 @@ pam_sss_la_SOURCES = \
src/sss_client/common.c \
src/sss_client/sss_cli.h \
src/util/atomic_io.c \
- src/sss_client/sss_pam_macros.h
+ src/sss_client/sss_pam_macros.h \
+ src/sss_client/sss_pam_compat.h
pam_sss_la_LIBADD = \
$(CLIENT_LIBS) \
diff --git a/src/external/pam.m4 b/src/external/pam.m4
index 90f89bee3..4776b6ae3 100644
--- a/src/external/pam.m4
+++ b/src/external/pam.m4
@@ -18,3 +18,12 @@ AC_CHECK_HEADERS([security/openpam.h],,,[
AC_CHECK_LIB([pam_misc], [misc_conv],
[PAM_MISC_LIBS="-lpam_misc"])
+
+dnl save LIBS to restore later
+save_LIBS="$LIBS"
+LIBS="$PAM_LIBS"
+
+AC_CHECK_FUNCS(pam_modutil_getlogin pam_vsyslog)
+
+dnl restore LIBS
+LIBS="$save_LIBS"
diff --git a/src/sss_client/pam_sss.c b/src/sss_client/pam_sss.c
index a24292974..d4baa19b6 100644
--- a/src/sss_client/pam_sss.c
+++ b/src/sss_client/pam_sss.c
@@ -35,8 +35,8 @@
#include <security/pam_modules.h>
#include <security/pam_appl.h>
-#include <security/pam_ext.h>
-#include <security/pam_modutil.h>
+
+#include "sss_pam_compat.h"
#include "sss_pam_macros.h"
#include "sss_cli.h"
diff --git a/src/sss_client/sss_pam_compat.h b/src/sss_client/sss_pam_compat.h
new file mode 100644
index 000000000..d131ceacb
--- /dev/null
+++ b/src/sss_client/sss_pam_compat.h
@@ -0,0 +1,45 @@
+/*
+ SSSD
+
+ Compat declarations for PAM.
+
+ Authors:
+ Lukas Slebodnik <lslebodn@redhat.com>
+
+ Copyright (C) Red Hat, Inc 2014
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef _SSS_PAM_COMPAT_H
+#define _SSS_PAM_COMPAT_H
+
+#ifdef HAVE_SECURITY_PAM_MODUTIL_H
+# include <security/pam_modutil.h>
+#endif /* HAVE_SECURITY_PAM_MODUTIL_H */
+
+#ifdef HAVE_SECURITY_PAM_EXT_H
+# include <security/pam_ext.h>
+#endif /* HAVE_SECURITY_PAM_EXT_H */
+
+#ifndef HAVE_PAM_VSYSLOG
+#define pam_vsyslog(pamh, priority, fmt, vargs) \
+ vsyslog((priority), (fmt), (vargs))
+#endif /* HAVE_PAM_VSYSLOG */
+
+#ifndef PAM_BAD_ITEM
+# define PAM_BAD_ITEM PAM_USER_UNKNOWN
+#endif /* PAM_BAD_ITEM */
+
+#endif /* _SSS_PAM_COMPAT_H */