From: Andre Noll Date: Thu, 22 Oct 2009 20:42:36 +0000 (+0200) Subject: drop_privileges_or_die(): Check return value of setuid(). X-Git-Tag: v0.4.0~7^2~2 X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=commitdiff_plain;h=1f132af229ff899aae357ee75a3b8e7b4bd061bd;ds=sidebyside drop_privileges_or_die(): Check return value of setuid(). The call to setuid() may fail, e.g. because it brings the process over its RLIMIT_NPROC resource limit. So print an error message and exit in this case. --- diff --git a/daemon.c b/daemon.c index 3bcb6e01..ae183d8e 100644 --- a/daemon.c +++ b/daemon.c @@ -269,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()); }