From 2510a6ec675669739a625305bcc11ab2ad671122 Mon Sep 17 00:00:00 2001 From: Russ Allbery Date: Sun, 12 Jul 2009 09:07:12 -0700 Subject: [PATCH] Ensure PAM modules are built PIC and pthread-aware where needed Link the PAM modules against libafsauthent_pic and libafsrpc_pic instead of the large collection of LWP AFS libraries so that they are always built PIC, even on platforms that don't normally build everything PIC. This also uses the pthread-aware version of the AFS routines on platforms that support it, avoiding conflict problems between LWP in PAM modules and pthread in a calling application. Build a separate copy of ktc.krb.o in the pam directory for pam_afs.krb since there is no AFS_KERBEROS_ENV-aware version of libafsauthent. Enable the PAM module build by default on x86_64-linux now that it's properly built PIC and can compile. Stop ignoring build failures in the PAM modules if they're configured to build. On platforms where they should not be built, they should be excluded in acinclude.m4. Reviewed-on: http://gerrit.openafs.org/65 Verified-by: Derrick Brashear Reviewed-by: Derrick Brashear --- Makefile.in | 2 +- acinclude.m4 | 2 +- src/pam/Makefile.in | 32 ++++++++++++++++++++------------ 3 files changed, 22 insertions(+), 14 deletions(-) diff --git a/Makefile.in b/Makefile.in index 632c961..08c7f21 100644 --- a/Makefile.in +++ b/Makefile.in @@ -334,7 +334,7 @@ vfsck: vol ${COMPILE_PART1} vfsck ${COMPILE_PART2} ;; \ esac -pam: cmd comerr kauth rxkad +pam: auth shlibafsauthent shlibafsrpc +set -x; \ if test "@HAVE_PAM@" = "yes"; then \ ${COMPILE_PART1} pam ${COMPILE_PART2} ; \ diff --git a/acinclude.m4 b/acinclude.m4 index 54fa21b..21e626a 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -778,7 +778,7 @@ else ;; x86_64-*-linux-gnu) AFS_SYSNAME="amd64_linuxXX" - enable_pam="no" + enable_pam="yes" ;; *) AC_MSG_ERROR(An AFS sysname is required) diff --git a/src/pam/Makefile.in b/src/pam/Makefile.in index ae1eefe..020959e 100644 --- a/src/pam/Makefile.in +++ b/src/pam/Makefile.in @@ -21,10 +21,10 @@ AFSLIBS = ${TOP_LIBDIR}/librxkad.a ${TOP_LIBDIR}/libsys.a \ ${TOP_LIBDIR}/util.a LDFLAGS = ${SHLIB_LDFLAGS} - LIBS = ${TOP_LIBDIR}/libkauth.a ${LIBSA} ${TOP_LIBDIR}/libauth.a \ - ${AFSLIBS} ${PAM_LIBS} @LIB_AFSDB@ - KLIBS = ${TOP_LIBDIR}/libkauth.krb.a ${LIBSA} ${TOP_LIBDIR}/libauth.krb.a \ - ${AFSLIBS} ${PAM_LIBS} @LIB_AFSDB@ + LIBS = ${TOP_LIBDIR}/libafsauthent_pic.a ${TOP_LIBDIR}/libafsrpc_pic.a \ + ${PAM_LIBS} @LIB_AFSDB@ ${MT_LIBS} + KLIBS = ktc_krb.o ${TOP_LIBDIR}/libafsauthent_pic.a \ + ${TOP_LIBDIR}/libafsrpc_pic.a ${PAM_LIBS} @LIB_AFSDB@ ${MT_LIBS} SHOBJS = afs_account.o afs_session.o afs_password.o \ afs_pam_msg.o afs_message.o AFS_component_version_number.o OBJS = $(SHOBJS) test_pam.o @@ -51,12 +51,20 @@ afs_util.o: afs_util.c afs_pam_msg.h afs_message.h afs_util.h afs_util_krb.o: afs_util.c afs_pam_msg.h afs_message.h afs_util.h ${CC} ${CFLAGS} -DAFS_KERBEROS_ENV -c ${srcdir}/afs_util.c -o afs_util_krb.o -pam_afs.so.1: $(SHOBJS) afs_setcred.o afs_auth.o afs_util.o - -../config/shlib-build -d $(srcdir) -f pam_afs.so.1 -l pam_afs -- \ +ktc_krb.o: ${srcdir}/../auth/ktc.c ${srcdir}/../auth/cellconfig.h \ + ${srcdir}/../auth/auth.h ${srcdir}/../auth/keys.h \ + ${TOP_INCDIR}/afs/vice.h + ${CC} ${CFLAGS} -DAFS_KERBEROS_ENV -c ${srcdir}/../auth/ktc.c -o $@ + +pam_afs.so.1: $(SHOBJS) afs_setcred.o afs_auth.o afs_util.o \ + ${TOP_LIBDIR}/libafsauthent_pic.a ${TOP_LIBDIR}/libafsrpc_pic.a + ../config/shlib-build -d $(srcdir) -f pam_afs.so.1 -l pam_afs -- \ afs_setcred.o afs_auth.o afs_util.o ${SHOBJS} ${LIBS} -pam_afs.krb.so.1: $(SHOBJS) afs_setcred_krb.o afs_auth_krb.o afs_util_krb.o - -../config/shlib-build -d $(srcdir) -f pam_afs.krb.so.1 -l pam_afs -- \ +pam_afs.krb.so.1: $(SHOBJS) afs_setcred_krb.o afs_auth_krb.o afs_util_krb.o \ + ktc_krb.o ${TOP_LIBDIR}/libafsauthent_pic.a \ + ${TOP_LIBDIR}/libafsrpc_pic.a + ../config/shlib-build -d $(srcdir) -f pam_afs.krb.so.1 -l pam_afs -- \ afs_setcred_krb.o afs_auth_krb.o afs_util_krb.o \ ${SHOBJS} ${KLIBS} @@ -77,13 +85,13 @@ test_pam: test_pam.o install: pam_afs.so.1 pam_afs.krb.so.1 ${INSTALL} -d ${DESTDIR}${libdir} - -${INSTALL_DATA} pam_afs.so.1 ${DESTDIR}${libdir}/pam_afs.so.1 - -${INSTALL_DATA} pam_afs.krb.so.1 ${DESTDIR}${libdir}/pam_afs.krb.so.1 + ${INSTALL_DATA} pam_afs.so.1 ${DESTDIR}${libdir}/pam_afs.so.1 + ${INSTALL_DATA} pam_afs.krb.so.1 ${DESTDIR}${libdir}/pam_afs.krb.so.1 dest: pam_afs.so.1 pam_afs.krb.so.1 ${INSTALL} -d ${DEST}/lib - -${INSTALL_DATA} pam_afs.so.1 ${DEST}/lib/pam_afs.so.1 - -${INSTALL_DATA} pam_afs.krb.so.1 ${DEST}/lib/pam_afs.krb.so.1 + ${INSTALL_DATA} pam_afs.so.1 ${DEST}/lib/pam_afs.so.1 + ${INSTALL_DATA} pam_afs.krb.so.1 ${DEST}/lib/pam_afs.krb.so.1 afs_pam_msg.o: afs_pam_msg.c afs_pam_msg.h afs_message.h afs_message.o: afs_message.c afs_message.h -- 1.9.4