From c05bf1914146281a934d573354c2fce2f466706e Mon Sep 17 00:00:00 2001 From: Lukas Slebodnik Date: Jun 03 2014 11:52:45 +0000 Subject: 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 (cherry picked from commit 683e1f67d08be7165ea456d4594c4c8a4eddc9b3) --- diff --git a/Makefile.am b/Makefile.am index 83ba673..9fddf36 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 90f89be..4776b6a 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 db18348..3a3935a 100644 --- a/src/sss_client/pam_sss.c +++ b/src/sss_client/pam_sss.c @@ -40,8 +40,8 @@ #include #include -#include -#include + +#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 0000000..d131cea --- /dev/null +++ b/src/sss_client/sss_pam_compat.h @@ -0,0 +1,45 @@ +/* + SSSD + + Compat declarations for PAM. + + Authors: + Lukas Slebodnik + + 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 . +*/ + +#ifndef _SSS_PAM_COMPAT_H +#define _SSS_PAM_COMPAT_H + +#ifdef HAVE_SECURITY_PAM_MODUTIL_H +# include +#endif /* HAVE_SECURITY_PAM_MODUTIL_H */ + +#ifdef HAVE_SECURITY_PAM_EXT_H +# include +#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 */