Blob Blame History Raw
diff -up frozen-bubble-2.2.1-beta1/server/tools.c~ frozen-bubble-2.2.1-beta1/server/tools.c
--- frozen-bubble-2.2.1-beta1/server/tools.c~	2010-08-07 15:36:27.000000000 +0200
+++ frozen-bubble-2.2.1-beta1/server/tools.c	2013-03-06 12:31:35.474128780 +0100
@@ -261,10 +261,17 @@ void daemonize() {
         if (user_to_switch != NULL) {
                 struct passwd* user = getpwnam(user_to_switch);
                 if (user) {
-                        setgid(user->pw_gid);
-                        setuid(user->pw_uid);
+                        if (setgid(user->pw_gid)) {
+                                l2(OUTPUT_TYPE_ERROR, "Cannot switch uid to %s: %s", user_to_switch, strerror(errno));
+                                exit(EXIT_FAILURE);
+                        }
+                        if (setgid(user->pw_gid)) {
+                                l2(OUTPUT_TYPE_ERROR, "Cannot switch gid to %s: %s", user_to_switch, strerror(errno));
+                                exit(EXIT_FAILURE);
+                        }
                 } else {
-                        l2(OUTPUT_TYPE_ERROR, "Cannot switch user to %s: %s", user_to_switch, strerror(errno));
+                        l2(OUTPUT_TYPE_ERROR, "Cannot find user %s: %s", user_to_switch, strerror(errno));
+                        exit(EXIT_FAILURE);
                 }
         }