summaryrefslogtreecommitdiff
path: root/src/core/manager.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2017-02-03 12:12:54 +0100
committerLennart Poettering <lennart@poettering.net>2017-02-06 16:58:06 +0100
commitae57dad3f92d116c66c4ca0223b7e07b44041436 (patch)
tree671efaa727b66ea5ce53a4e31fe99b1ad18d5c42 /src/core/manager.c
parent0f92383243fbeb6c33de8abed23342f51319af31 (diff)
manager: refuse reloading/reexecing when /run is overly full
Let's add an extra safety check: before entering a reload/reexec, let's verify that there's enough room in /run for it. Fixes: #5016
Diffstat (limited to 'src/core/manager.c')
-rw-r--r--src/core/manager.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/core/manager.c b/src/core/manager.c
index d83c5ef5e2..b22f85fee3 100644
--- a/src/core/manager.c
+++ b/src/core/manager.c
@@ -1984,7 +1984,9 @@ static int manager_dispatch_signal_fd(sd_event_source *source, int fd, uint32_t
if (MANAGER_IS_SYSTEM(m)) {
/* This is for compatibility with the
* original sysvinit */
- m->exit_code = MANAGER_REEXECUTE;
+ r = verify_run_space_and_log("Refusing to reexecute");
+ if (r >= 0)
+ m->exit_code = MANAGER_REEXECUTE;
break;
}
@@ -2061,7 +2063,9 @@ static int manager_dispatch_signal_fd(sd_event_source *source, int fd, uint32_t
}
case SIGHUP:
- m->exit_code = MANAGER_RELOAD;
+ r = verify_run_space_and_log("Refusing to reload");
+ if (r >= 0)
+ m->exit_code = MANAGER_RELOAD;
break;
default: {