From bb7208c591a9aa9da87fe9758f2a0b35f34bd4ca Mon Sep 17 00:00:00 2001 From: Joachim Nilsson Date: Sun, 4 Sep 2016 23:23:37 +0200 Subject: [PATCH] bootmisc: Check return value from chmod() API Found by Coverity Scan. Signed-off-by: Joachim Nilsson --- plugins/bootmisc.c | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/plugins/bootmisc.c b/plugins/bootmisc.c index 0b2fd28d..f53a143b 100644 --- a/plugins/bootmisc.c +++ b/plugins/bootmisc.c @@ -30,6 +30,12 @@ #include "../plugin.h" #include "../utmp-api.h" +static void create(char *path, mode_t mode, uid_t uid, gid_t gid) +{ + if (touch(path) || chmod(path, mode) || chown(path, uid, gid)) + _w("Failed creating %s properl.", path); +} + /* * Setup standard FHS 2.3 structure in /var, and write runlevel to UTMP */ @@ -72,18 +78,13 @@ static void setup(void *UNUSED(arg)) if (gid < 0) gid = 0; - touch("/var/run/utmp"); - chmod("/var/run/utmp", 0664); - chown("/var/run/utmp", 0, gid); - touch("/var/log/wtmp"); - chmod("/var/log/wtmp", 0664); - chown("/var/log/wtmp", 0, gid); - touch("/var/log/btmp"); - chmod("/var/log/btmp", 0600); - chown("/var/log/btmp", 0, gid); - touch("/var/log/lastlog"); - chmod("/var/log/lastlog", 0664); - chown("/var/log/lastlog", 0, gid); + /* + * UTMP actually needs multiple db files + */ + create("/var/run/utmp", 0644, 0, gid); /* Currently logged in */ + create("/var/log/wtmp", 0644, 0, gid); /* Login history */ + create("/var/log/btmp", 0600, 0, gid); /* Failed logins */ + create("/var/log/lastlog", 0644, 0, gid); /* Set BOOT_TIME UTMP entry */ utmp_set_boot();