From: Terry Burton Date: Mon, 23 Nov 2020 16:01:12 +0000 (+0000) Subject: Call fr_set_dumpable even when we don't switch users / groups X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=54004aa0f6ddfcb1c4745ded11e3bb9bb64ebfd8;p=thirdparty%2Ffreeradius-server.git Call fr_set_dumpable even when we don't switch users / groups Currently during startup, dump_core (implicitly initialised to false) is only set when we switch_users(). This results in debuggers detaching even with security.allow_core_dumps = yes due to calling prctl(PR_SET_DUMPABLE, 0) from fr_reset_dumpable() in contexts where we don't switch_users(), such as unprivileged debugging within the build tree. --- diff --git a/src/lib/server/main_config.c b/src/lib/server/main_config.c index e7117484293..799b9d3b076 100644 --- a/src/lib/server/main_config.c +++ b/src/lib/server/main_config.c @@ -795,14 +795,6 @@ static int switch_users(main_config_t *config, CONF_SECTION *cs) rad_suid_down(); } - /* - * This also clears the dumpable flag if core dumps - * aren't allowed. - */ - if (fr_set_dumpable(config->allow_core_dumps) < 0) PERROR("Failed enabling core dumps"); - - if (config->allow_core_dumps) INFO("Core dumps are enabled"); - return 0; } #endif /* HAVE_SETUID */ @@ -1180,6 +1172,13 @@ do {\ if (switch_users(config, cs) < 0) goto failure; #endif + /* + * This also clears the dumpable flag if core dumps + * aren't allowed. + */ + if (fr_set_dumpable(config->allow_core_dumps) < 0) PERROR("Failed enabling core dumps"); + if (config->allow_core_dumps) INFO("Core dumps are enabled"); + /* * This allows us to figure out where, relative to * radiusd.conf, the other configuration files exist.