From 520dcfd5b1dd40d2ae8668789dde0974fa2e1a4e Mon Sep 17 00:00:00 2001 From: Sean Hefty Date: Mon, 9 Jul 2012 14:58:14 -0700 Subject: [PATCH] rsocket: Build librspreload library as part of build Build the rsocket preload library as part of the build. To reduce the risk of the preload library intercepting calls without the user's knowledge, the preload library is installed into {_libdir}/rsocket. Signed-off-by: Sean Hefty --- Makefile.am | 12 +++++++++++- librdmacm.spec.in | 8 ++++++-- src/librspreload.map | 30 ++++++++++++++++++++++++++++++ src/preload.c | 3 +++ 4 files changed, 50 insertions(+), 3 deletions(-) create mode 100644 src/librspreload.map diff --git a/Makefile.am b/Makefile.am index 51b2f899..d74bbacc 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,17 +1,21 @@ INCLUDES = -I$(srcdir)/include +rslibdir = $(libdir)/rsocket lib_LTLIBRARIES = src/librdmacm.la +rslib_LTLIBRARIES = src/librspreload.la ACLOCAL_AMFLAGS = -I config AM_CFLAGS = -g -Wall -D_GNU_SOURCE -DSYSCONFDIR=\"$(sysconfdir)\" -DRDMADIR=\"@rdmadir@\" src_librdmacm_la_CFLAGS = $(AM_CFLAGS) +src_librspreload_la_CFLAGS = -Wall -ldl -shared -fPIC -D_GNU_SOURCE if HAVE_LD_VERSION_SCRIPT librdmacm_version_script = -Wl,--version-script=$(srcdir)/src/librdmacm.map else librdmacm_version_script = endif +librspreload_version_script = src_librdmacm_la_SOURCES = src/cma.c src/addrinfo.c src/acm.c \ src/rsocket.c src/indexer.c @@ -19,6 +23,12 @@ src_librdmacm_la_LDFLAGS = -version-info 1 -export-dynamic \ $(librdmacm_version_script) src_librdmacm_la_DEPENDENCIES = $(srcdir)/src/librdmacm.map +src_librspreload_la_SOURCES = src/preload.c src/indexer.c +src_librspreload_la_LDFLAGS = -version-info 1 -export-dynamic \ + $(librspreload_version_script) +src_librspreload_la_DEPENDENCIES = $(srcdir)/src/librspreload.map +src_librspreload_la_LIBADD = $(top_builddir)/src/librdmacm.la + bin_PROGRAMS = examples/ucmatose examples/rping examples/udaddy examples/mckey \ examples/rdma_client examples/rdma_server examples/rdma_xclient \ examples/rdma_xserver examples/rstream examples/rcopy @@ -116,7 +126,7 @@ man_MANS = \ man/rdma_cm.7 \ man/rsocket.7 -EXTRA_DIST = src/cma.h src/indexer.h src/librdmacm.map \ +EXTRA_DIST = src/cma.h src/indexer.h src/librdmacm.map src/librspreload.map \ librdmacm.spec.in $(man_MANS) dist-hook: librdmacm.spec diff --git a/librdmacm.spec.in b/librdmacm.spec.in index 72481374..4652bbcc 100644 --- a/librdmacm.spec.in +++ b/librdmacm.spec.in @@ -44,6 +44,7 @@ rm -rf $RPM_BUILD_ROOT %makeinstall # remove unpackaged files from the buildroot rm -f $RPM_BUILD_ROOT%{_libdir}/*.la +rm -f $RPM_BUILD_ROOT%{_libdir}/rsocket/*.la %clean rm -rf $RPM_BUILD_ROOT @@ -53,13 +54,16 @@ rm -rf $RPM_BUILD_ROOT %files %defattr(-,root,root,-) -%{_libdir}/librdmacm*.so.* +%{_libdir}/lib*.so.* +%{_libdir}/rsocket/lib*.so.* %doc AUTHORS COPYING README %files devel %defattr(-,root,root) -%{_libdir}/lib*.so +%{_libdir}/librdmacm*.so +%{_libdir}/rsocket/librspreload*.so %{_libdir}/*.a +%{_libdir}/rsocket/*.a %{_includedir}/* %{_mandir}/man3/* %{_mandir}/man7/* diff --git a/src/librspreload.map b/src/librspreload.map new file mode 100644 index 00000000..554050da --- /dev/null +++ b/src/librspreload.map @@ -0,0 +1,30 @@ +RSPRELOAD_1.0 { + global: + socket; + bind; + listen; + accept; + connect; + shutdown; + close; + recv; + recvfrom; + recvmsg; + send; + sendto; + sendmsg; + read; + readv; + write; + writev; + poll; + select; + getpeername; + getsockname; + setsockopt; + getsockopt; + fcntl; + poll; + select; + local: *; +}; diff --git a/src/preload.c b/src/preload.c index d21389f3..5ed77d76 100644 --- a/src/preload.c +++ b/src/preload.c @@ -54,6 +54,7 @@ #include #include #include +#include #include #include @@ -224,6 +225,7 @@ static void init_preload(void) /* Quick check without lock */ if (init) return; +printf("%s\n", __func__); pthread_mutex_lock(&mut); if (init) @@ -328,6 +330,7 @@ int socket(int domain, int type, int protocol) static __thread int recursive; int index, ret; +printf("%s\n", __func__); if (recursive) goto real; -- 2.45.2