]> git.tuebingen.mpg.de Git - paraslash.git/blobdiff - daemon.c
drop_privileges_or_die(): Check return value of setuid().
[paraslash.git] / daemon.c
index 12b19275de9f6c561e021dad1b06ed9fae1ba4b9..ae183d8edad65b0d20fdd7cc2fa4c332d8401564 100644 (file)
--- a/daemon.c
+++ b/daemon.c
@@ -167,7 +167,6 @@ void daemonize(void)
                goto err;
        if (chdir("/") < 0)
                goto err;
-       umask(0);
        null = open("/dev/null", O_RDONLY);
        if (null < 0)
                goto err;
@@ -270,7 +269,11 @@ void drop_privileges_or_die(const char *username, const char *groupname)
                exit(EXIT_FAILURE);
        }
        PARA_INFO_LOG("dropping root privileges\n");
-       setuid(p->pw_uid);
+       if (setuid(p->pw_uid) < 0) {
+               PARA_EMERG_LOG("failed to set effective user ID (%s)",
+                       strerror(errno));
+               exit(EXIT_FAILURE);
+       }
        PARA_DEBUG_LOG("uid: %d, euid: %d\n", (int)getuid(), (int)geteuid());
 }