summaryrefslogtreecommitdiff
path: root/source3
diff options
context:
space:
mode:
authorJames Peach <jpeach@samba.org>2006-05-16 02:50:49 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 11:17:03 -0500
commit0ed76af63d25fe98fc0366708675a514a3c5bddb (patch)
treeb9be0ddf6f61f4e4842e1f6d977127d5702458b1 /source3
parent62f61caff4cb36070a0987bfccc679ade091f73b (diff)
downloadsamba-0ed76af63d25fe98fc0366708675a514a3c5bddb.tar.gz
samba-0ed76af63d25fe98fc0366708675a514a3c5bddb.tar.bz2
samba-0ed76af63d25fe98fc0366708675a514a3c5bddb.zip
r15631: Add a new option "enable core files". Administrators can use this to
disable automatic core file dumping. Core files are enabled by default. (This used to be commit b59189280057849b67ac65f31cec23b859e21c91)
Diffstat (limited to 'source3')
-rw-r--r--source3/lib/fault.c9
-rw-r--r--source3/param/loadparm.c4
2 files changed, 13 insertions, 0 deletions
diff --git a/source3/lib/fault.c b/source3/lib/fault.c
index 8ae45f2435..dc8c276d02 100644
--- a/source3/lib/fault.c
+++ b/source3/lib/fault.c
@@ -151,6 +151,15 @@ void dump_core_setup(const char *progname)
void dump_core(void)
{
+ /* Note that even if core dumping has been disabled, we still set up
+ * the core path. This is to handle the case where core dumping is
+ * turned on in smb.conf and the relevant daemon is not restarted.
+ */
+ if (!lp_enable_core_files()) {
+ DEBUG(0, ("Exiting on internal error (core file administratively disabled\n"));
+ exit(1);
+ }
+
if (*corepath != '\0') {
/* The chdir might fail if we dump core before we finish
* processing the config file.
diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c
index 695e7f1aac..fadd4d0ee3 100644
--- a/source3/param/loadparm.c
+++ b/source3/param/loadparm.c
@@ -289,6 +289,7 @@ typedef struct {
BOOL bDebugHiresTimestamp;
BOOL bDebugPid;
BOOL bDebugUid;
+ BOOL bEnableCoreFiles;
BOOL bHostMSDfs;
BOOL bUseMmap;
BOOL bHostnameLookups;
@@ -947,6 +948,7 @@ static struct parm_struct parm_table[] = {
{"debug hires timestamp", P_BOOL, P_GLOBAL, &Globals.bDebugHiresTimestamp, NULL, NULL, FLAG_ADVANCED},
{"debug pid", P_BOOL, P_GLOBAL, &Globals.bDebugPid, NULL, NULL, FLAG_ADVANCED},
{"debug uid", P_BOOL, P_GLOBAL, &Globals.bDebugUid, NULL, NULL, FLAG_ADVANCED},
+ {"enable core files", P_BOOL, P_GLOBAL, &Globals.bEnableCoreFiles, NULL, NULL, FLAG_ADVANCED},
{N_("Protocol Options"), P_SEP, P_SEPARATOR},
@@ -1504,6 +1506,7 @@ static void init_globals(BOOL first_time_only)
Globals.bDebugHiresTimestamp = False;
Globals.bDebugPid = False;
Globals.bDebugUid = False;
+ Globals.bEnableCoreFiles = True;
Globals.max_ttl = 60 * 60 * 24 * 3; /* 3 days default. */
Globals.max_wins_ttl = 60 * 60 * 24 * 6; /* 6 days default. */
Globals.min_wins_ttl = 60 * 60 * 6; /* 6 hours default. */
@@ -1875,6 +1878,7 @@ FN_GLOBAL_BOOL(lp_timestamp_logs, &Globals.bTimestampLogs)
FN_GLOBAL_BOOL(lp_debug_hires_timestamp, &Globals.bDebugHiresTimestamp)
FN_GLOBAL_BOOL(lp_debug_pid, &Globals.bDebugPid)
FN_GLOBAL_BOOL(lp_debug_uid, &Globals.bDebugUid)
+FN_GLOBAL_BOOL(lp_enable_core_files, &Globals.bEnableCoreFiles)
FN_GLOBAL_BOOL(lp_browse_list, &Globals.bBrowseList)
FN_GLOBAL_BOOL(lp_nis_home_map, &Globals.bNISHomeMap)
static FN_GLOBAL_BOOL(lp_time_server, &Globals.bTimeServer)