diff options
Diffstat (limited to 'src/user-sessions/user-sessions.c')
-rw-r--r-- | src/user-sessions/user-sessions.c | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/src/user-sessions/user-sessions.c b/src/user-sessions/user-sessions.c index e80a7771de..9b29b5ba1d 100644 --- a/src/user-sessions/user-sessions.c +++ b/src/user-sessions/user-sessions.c @@ -1,5 +1,3 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - /*** This file is part of systemd. @@ -19,12 +17,15 @@ along with systemd; If not, see <http://www.gnu.org/licenses/>. ***/ -#include <unistd.h> #include <errno.h> +#include <unistd.h> +#include "fileio.h" +#include "fileio-label.h" #include "log.h" +#include "selinux-util.h" +#include "string-util.h" #include "util.h" -#include "fileio.h" int main(int argc, char*argv[]) { @@ -39,13 +40,14 @@ int main(int argc, char*argv[]) { umask(0022); + mac_selinux_init(); + if (streq(argv[1], "start")) { int r = 0; - if (unlink("/run/nologin") < 0 && errno != ENOENT) { - log_error_errno(errno, "Failed to remove /run/nologin file: %m"); - r = -errno; - } + if (unlink("/run/nologin") < 0 && errno != ENOENT) + r = log_error_errno(errno, + "Failed to remove /run/nologin file: %m"); if (unlink("/etc/nologin") < 0 && errno != ENOENT) { /* If the file doesn't exist and /etc simply @@ -65,7 +67,7 @@ int main(int argc, char*argv[]) { } else if (streq(argv[1], "stop")) { int r; - r = write_string_file("/run/nologin", "System is going down.", WRITE_STRING_FILE_CREATE|WRITE_STRING_FILE_ATOMIC); + r = write_string_file_atomic_label("/run/nologin", "System is going down."); if (r < 0) { log_error_errno(r, "Failed to create /run/nologin: %m"); return EXIT_FAILURE; @@ -76,5 +78,7 @@ int main(int argc, char*argv[]) { return EXIT_FAILURE; } + mac_selinux_finish(); + return EXIT_SUCCESS; } |