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); } }