]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Call fr_set_dumpable even when we don't switch users / groups
authorTerry Burton <tez@terryburton.co.uk>
Mon, 23 Nov 2020 16:01:12 +0000 (16:01 +0000)
committerAlan DeKok <aland@freeradius.org>
Tue, 24 Nov 2020 15:46:41 +0000 (10:46 -0500)
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.

src/lib/server/main_config.c

index e71174842930f81e531c3dbf2d0cffbddf4f7452..799b9d3b076adaadd005cefeafa72a0c64a4ed89 100644 (file)
@@ -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.