error("Cannot set supplementary groups for user '%s'", username);
freez(supplementary_groups);
- supplementary_groups = NULL;
ngroups = 0;
}
+#ifdef __APPLE__
+ if(setregid(gid, gid) != 0) {
+#else
if(setresgid(gid, gid, gid) != 0) {
+#endif /* __APPLE__ */
error("Cannot switch to user's %s group (gid: %u).", username, gid);
return -1;
}
+#ifdef __APPLE__
+ if(setreuid(uid, uid) != 0) {
+#else
if(setresuid(uid, uid, uid) != 0) {
+#endif /* __APPLE__ */
error("Cannot switch to user %s (uid: %u).", username, uid);
return -1;
}
#endif
}
-int become_daemon(int dont_fork, const char *user)
+int become_daemon(int dont_fork, const char *user, int oom_score)
{
if(!dont_fork) {
int i = fork();
}
// Set new file permissions
- umask(0002);
+ umask(0007);
// adjust my Out-Of-Memory score
- oom_score_adj(1000);
+ oom_score_adj(oom_score);
// never become a problem
if(sched_setscheduler_idle() != 0) {
create_needed_dir(VARLIB_DIR, getuid(), getgid());
}
- if(pidfd != -1) {
+ if(pidfd != -1)
close(pidfd);
- pidfd = -1;
- }
return(0);
}