From 1f132af229ff899aae357ee75a3b8e7b4bd061bd Mon Sep 17 00:00:00 2001 From: Andre Noll Date: Thu, 22 Oct 2009 22:42:36 +0200 Subject: [PATCH] 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. --- daemon.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) 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()); } -- 2.30.2