summaryrefslogtreecommitdiffstats
path: root/src/fastd.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/fastd.c')
-rw-r--r--src/fastd.c19
1 files changed, 15 insertions, 4 deletions
diff --git a/src/fastd.c b/src/fastd.c
index 64bc294..8adea3c 100644
--- a/src/fastd.c
+++ b/src/fastd.c
@@ -312,11 +312,22 @@ static inline void write_pid(void) {
static void set_user(void) {
#ifdef USE_USER
if (conf.user || conf.group) {
- if (setgid(conf.gid) < 0)
- exit_errno("setgid");
- if (setuid(conf.uid) < 0)
- exit_errno("setuid");
+#ifdef HAVE_SETRESGID
+ if (setresgid(conf.gid, conf.gid, conf.gid) < 0)
+ exit_errno("setresgid");
+#else
+ if (setregid(conf.gid, conf.gid) < 0)
+ exit_errno("setregid");
+#endif
+
+#ifdef HAVE_SETRESUID
+ if (setresuid(conf.uid, conf.uid, conf.uid) < 0)
+ exit_errno("setresuid");
+#else
+ if (setreuid(conf.uid, conf.uid) < 0)
+ exit_errno("setreuid");
+#endif
pr_info("changed to UID %i, GID %i", (int)conf.uid, (int)conf.gid);
}