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 13:52:45 +0200
commitc05bf1914146281a934d573354c2fce2f466706e (patch)
treec5aeb7e1c641315e0b48b3fcb0adf20d051aedef
parentad962c5a98000c555669b7babd507e3a0c6e4f43 (diff)
downloadsssd-c05bf1914146281a934d573354c2fce2f466706e.tar.gz
sssd-c05bf1914146281a934d573354c2fce2f466706e.tar.xz
sssd-c05bf1914146281a934d573354c2fce2f466706e.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> (cherry picked from commit 683e1f67d08be7165ea456d4594c4c8a4eddc9b3)
-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 83ba673da..9fddf36c5 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1695,7 +1695,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 db18348b5..3a3935a6f 100644
--- a/src/sss_client/pam_sss.c
+++ b/src/sss_client/pam_sss.c
@@ -40,8 +40,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 */