From ece5cd52db59632b861fa3028f6f885fe8e13551 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Humberto=20Di=C3=B3genes?= Date: Tue, 16 Dec 2014 15:12:28 -0300 Subject: [PATCH] FS-7088 #resolve Set flag to enable core dump from non-root users. When FreeSWITCH is running as a non-privileged user, we need to enable PR_SET_DUMPABLE for it to be able to generate core dumps. Instead of a generic __linux__ check, there's a new configure.ac flag to check directly for prctl.h, which could also be used in other places in the code. --- configure.ac | 2 +- src/switch_core.c | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index a91690aeca..160c79f72a 100644 --- a/configure.ac +++ b/configure.ac @@ -766,7 +766,7 @@ AC_SUBST(LIBTOOL_LIB_EXTEN) # Checks for header files. AC_HEADER_DIRENT AC_HEADER_STDC -AC_CHECK_HEADERS([sys/types.h sys/resource.h sched.h wchar.h sys/filio.h sys/ioctl.h sys/select.h netdb.h execinfo.h]) +AC_CHECK_HEADERS([sys/types.h sys/resource.h sched.h wchar.h sys/filio.h sys/ioctl.h sys/prctl.h sys/select.h netdb.h execinfo.h]) if test x"$ac_cv_header_wchar_h" = xyes; then HAVE_WCHAR_H_DEFINE=1 diff --git a/src/switch_core.c b/src/switch_core.c index 59682df609..b2216ec2b5 100644 --- a/src/switch_core.c +++ b/src/switch_core.c @@ -51,6 +51,9 @@ #endif #include #include +#ifdef HAVE_SYS_PRCTL_H +#include +#endif SWITCH_DECLARE_DATA switch_directories SWITCH_GLOBAL_dirs = { 0 }; @@ -1029,6 +1032,12 @@ SWITCH_DECLARE(int32_t) change_user_group(const char *user, const char *group) switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Failed to change uid!\n"); return -1; } +#ifdef HAVE_SYS_PRCTL_H + if (prctl(PR_SET_DUMPABLE, 1) < 0) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Failed to enable core dumps!\n"); + return -1; + } +#endif } #endif return 0;