From 79e0299643043eec4031012c48cd15dbbd4df10c Mon Sep 17 00:00:00 2001 From: Eileen Donlon Date: Wed, 7 Dec 2011 10:51:35 -0500 Subject: [PATCH] Fixed coredump compile problems on bsd, windows --- src/util-coredump-config.c | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/src/util-coredump-config.c b/src/util-coredump-config.c index 2b9abe72ee..4081cf2693 100644 --- a/src/util-coredump-config.c +++ b/src/util-coredump-config.c @@ -26,7 +26,6 @@ #define _FILE_OFFSET_BITS 64 #include "util-coredump-config.h" #include "conf.h" -#include #include /** @@ -81,7 +80,8 @@ int32_t CoredumpLoadConfig (void) return 0; #elif !defined OS_FREEBSD && !defined __OpenBSD__ - /* Linux specific core dump configuration; set dumpable flag if needed */ +/* Linux specific core dump configuration; set dumpable flag if needed */ +#include int dumpable = 0; dumpable = prctl (PR_GET_DUMPABLE, 0, 0, 0, 0); if (dumpable == -1) { @@ -145,10 +145,16 @@ int32_t CoredumpLoadConfig (void) new_lim.rlim_cur = max_dump; /* check whether the hard limit needs to be adjusted */ - if (lim.rlim_max == RLIM_SAVED_MAX || lim.rlim_max == RLIM_INFINITY) { - /* keep the current value (unknown or unlimited) for the hard limit */ + if (lim.rlim_max == RLIM_INFINITY) { + /* keep the current value (unlimited) for the hard limit */ + new_lim.rlim_max = lim.rlim_max; + } +#ifdef RLIM_SAVED_MAX + else if (lim.rlim_max == RLIM_SAVED_MAX) { + /* keep the current value (unknown) for the hard limit */ new_lim.rlim_max = lim.rlim_max; } +#endif else if (lim.rlim_max < max_dump) { /* need to raise the hard coredump size limit */ new_lim.rlim_max = max_dump; @@ -164,9 +170,11 @@ int32_t CoredumpLoadConfig (void) if (actual_lim.rlim_cur == RLIM_INFINITY) { SCLogInfo ("Core dump size set to unlimited."); } +#ifdef RLIM_SAVED_CUR else if (actual_lim.rlim_cur == RLIM_SAVED_CUR) { SCLogInfo ("Core dump size set to soft limit."); } +#endif else { SCLogInfo ("Core dump size set to %llu", (unsigned long long) actual_lim.rlim_cur); } @@ -177,7 +185,11 @@ int32_t CoredumpLoadConfig (void) if (errno == EINVAL || errno == EPERM) { /* could't increase the hard limit, or the soft limit exceeded the hard * limit; try to raise the soft limit to the hard limit */ - if (lim.rlim_cur == RLIM_SAVED_CUR || (lim.rlim_cur < max_dump && lim.rlim_cur < lim.rlim_max)) { + if ((lim.rlim_cur < max_dump && lim.rlim_cur < lim.rlim_max) +#ifdef RLIM_SAVED_CUR + || (lim.rlim_cur == RLIM_SAVED_CUR) +#endif + ){ new_lim.rlim_max = lim.rlim_max; new_lim.rlim_cur = lim.rlim_max; if (setrlimit (RLIMIT_CORE, &new_lim) == 0) {