From: Michael Jeanson Date: Thu, 29 Nov 2018 21:22:07 +0000 (-0500) Subject: Revert stubbing of runas functions X-Git-Tag: v2.11.0-rc2~114 X-Git-Url: https://git.lttng.org./?a=commitdiff_plain;h=df458f8c4917bc6b302db9f2a0967f63c2337732;p=lttng-tools.git Revert stubbing of runas functions All the runas functions were stubbed on builds where the sessiond isn't built which is the case for all platforms except Linux. This was done because of 2 new commands that require elf.h which is not present on MacOSX. However the other commands can be used by the relayd. Revert this and and only stub the relevant commands when "elf.h" is not present on the system. Signed-off-by: Michael Jeanson Signed-off-by: Jérémie Galarneau --- diff --git a/configure.ac b/configure.ac index 20a8da391..fc03da805 100644 --- a/configure.ac +++ b/configure.ac @@ -194,9 +194,11 @@ AC_CHECK_HEADERS([ \ signal.h stdlib.h sys/un.h sys/socket.h stdlib.h stdio.h \ getopt.h sys/ipc.h sys/shm.h popt.h grp.h arpa/inet.h \ netdb.h netinet/in.h paths.h stddef.h sys/file.h sys/ioctl.h \ - sys/mount.h sys/param.h sys/time.h + sys/mount.h sys/param.h sys/time.h elf.h ]) +AM_CONDITIONAL([HAVE_ELF_H], [test x$ac_cv_header_elf_h = xyes]) + # Basic functions check AC_CHECK_FUNCS([ \ atexit bzero clock_gettime dup2 fdatasync fls ftruncate \ @@ -873,7 +875,6 @@ build_lib_compat=no build_lib_consumer=no build_lib_hashtable=no build_lib_health=no -build_lib_runas=no build_lib_index=no build_lib_kernel_consumer=no build_lib_kernel_ctl=no @@ -930,7 +931,6 @@ AS_IF([test x$enable_bin_lttng_sessiond != xno], build_lib_relayd=yes build_lib_testpoint=yes build_lib_health=yes - build_lib_runas=yes ] ) @@ -1039,7 +1039,6 @@ AM_CONDITIONAL([BUILD_LIB_CONFIG], [test x$build_lib_config = xyes]) AM_CONDITIONAL([BUILD_LIB_CONSUMER], [test x$build_lib_consumer = xyes]) AM_CONDITIONAL([BUILD_LIB_HASHTABLE], [test x$build_lib_hashtable = xyes]) AM_CONDITIONAL([BUILD_LIB_HEALTH], [test x$build_lib_health = xyes]) -AM_CONDITIONAL([BUILD_LIB_RUNAS], [test x$build_lib_runas = xyes]) AM_CONDITIONAL([BUILD_LIB_INDEX], [test x$build_lib_index = xyes]) AM_CONDITIONAL([BUILD_LIB_KERNEL_CONSUMER], [test x$build_lib_kernel_consumer = xyes]) AM_CONDITIONAL([BUILD_LIB_KERNEL_CTL], [test x$build_lib_kernel_ctl = xyes]) diff --git a/src/common/Makefile.am b/src/common/Makefile.am index d754924dd..1824fe46d 100644 --- a/src/common/Makefile.am +++ b/src/common/Makefile.am @@ -12,7 +12,7 @@ DIST_SUBDIRS = compat health hashtable kernel-ctl sessiond-comm relayd \ noinst_LTLIBRARIES = libcommon.la EXTRA_DIST = mi-lttng-3.0.xsd -libcommon_la_SOURCES = error.h error.c utils.c utils.h runas.h \ +libcommon_la_SOURCES = error.h error.c utils.c utils.h runas.h runas.c \ common.h futex.c futex.h uri.c uri.h defaults.c \ pipe.c pipe.h readwrite.c readwrite.h \ mi-lttng.h mi-lttng.c \ @@ -29,16 +29,14 @@ libcommon_la_SOURCES = error.h error.c utils.c utils.h runas.h \ waiter.h waiter.c \ userspace-probe.c event.c +if HAVE_ELF_H +libcommon_la_SOURCES += lttng-elf.h lttng-elf.c +endif + libcommon_la_LIBADD = \ $(top_builddir)/src/common/config/libconfig.la \ $(UUID_LIBS) -if BUILD_LIB_RUNAS -libcommon_la_SOURCES += runas.c lttng-elf.h lttng-elf.c -else -libcommon_la_SOURCES += runas-stub.c -endif - if BUILD_LIB_COMPAT SUBDIRS += compat endif diff --git a/src/common/lttng-elf.c b/src/common/lttng-elf.c index cb01f7bb7..cd10632ce 100644 --- a/src/common/lttng-elf.c +++ b/src/common/lttng-elf.c @@ -56,13 +56,13 @@ do { \ switch (sizeof(x)) { \ case 8: \ - x = be64toh(x); \ + x = be64toh((uint64_t)x); \ break; \ case 4: \ - x = be32toh(x); \ + x = be32toh((uint32_t)x); \ break; \ case 2: \ - x = be16toh(x); \ + x = be16toh((uint16_t)x); \ break; \ case 1: \ break; \ diff --git a/src/common/runas-stub.c b/src/common/runas-stub.c deleted file mode 100644 index 7af8b6e0c..000000000 --- a/src/common/runas-stub.c +++ /dev/null @@ -1,62 +0,0 @@ -#ifndef _RUNAS_STUB_H -#define _RUNAS_STUB_H - -/* - * Copyright (C) 2018 - Francis Deslauriers - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License, version 2 only, - * as published by the Free Software Foundation. - * - * 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 General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - */ - -#include -#include - -int run_as_mkdir_recursive(const char *path, mode_t mode, uid_t uid, gid_t gid) -{ - return -1; -} -int run_as_mkdir(const char *path, mode_t mode, uid_t uid, gid_t gid) -{ - return -1; -} -int run_as_open(const char *path, int flags, mode_t mode, uid_t uid, gid_t gid) -{ - return -1; -} -int run_as_unlink(const char *path, uid_t uid, gid_t gid) -{ - return -1; -} -int run_as_rmdir_recursive(const char *path, uid_t uid, gid_t gid) -{ - return -1; -} -int lttng_elf_get_symbol_offset(int fd, char *symbol, uint64_t *offset) -{ - return -1; -} -int lttng_elf_get_sdt_probe_offsets(int fd, const char *provider_name, - const char *probe_name, uint64_t **offsets, uint32_t *nb_probe) -{ - return -1; -} -int run_as_create_worker(char *procname) -{ - return -1; -} -void run_as_destroy_worker(void) -{ - return; -} - -#endif /* _RUNAS_STUB_H */ diff --git a/src/common/runas.c b/src/common/runas.c index b4a4ccdde..d3026d3c3 100644 --- a/src/common/runas.c +++ b/src/common/runas.c @@ -240,6 +240,7 @@ int _rmdir_recursive(struct run_as_data *data, struct run_as_ret *ret_value) return ret_value->u.rmdir_recursive.ret; } +#ifdef HAVE_ELF_H static int _extract_elf_symbol_offset(struct run_as_data *data, struct run_as_ret *ret_value) @@ -298,6 +299,23 @@ free_offset: end: return ret; } +#else +static +int _extract_elf_symbol_offset(struct run_as_data *data, + struct run_as_ret *ret_value) +{ + ERR("Unimplemented runas command RUN_AS_EXTRACT_ELF_SYMBOL_OFFSET"); + return -1; +} + +static +int _extract_sdt_probe_offsets(struct run_as_data *data, + struct run_as_ret *ret_value) +{ + ERR("Unimplemented runas command RUN_AS_EXTRACT_SDT_PROBE_OFFSETS"); + return -1; +} +#endif static run_as_fct run_as_enum_to_fct(enum run_as_cmd cmd)