chdir(/) immediately after chroot

This commit is contained in:
Stuart Henderson 2014-03-05 21:48:17 +00:00
parent 3dba97de1d
commit e54f151f05
3 changed files with 15 additions and 15 deletions

10
dns.c
View File

@ -89,6 +89,11 @@ dns_init(void)
exit(EX_NOUSER);
}
if (chdir("/") < 0) {
syslog(LOG_ERR, "chdir: %m");
exit(EX_UNAVAILABLE);
}
if (setusercontext(NULL, pw, pw->pw_uid,
LOGIN_SETALL & ~LOGIN_SETUSER) < 0)
exit(EX_NOPERM);
@ -98,11 +103,6 @@ dns_init(void)
exit(EX_NOPERM);
}
if (chdir("/") < 0) {
syslog(LOG_ERR, "chdir: %m");
exit(EX_UNAVAILABLE);
}
event_init();
/* event for the request */

10
icbd.c
View File

@ -449,16 +449,16 @@ icbd_restrict(void)
exit(EX_UNAVAILABLE);
}
if (setuid(pw->pw_uid) < 0) {
syslog(LOG_ERR, "%d: %m", pw->pw_uid);
exit(EX_NOPERM);
}
if (chdir("/") < 0) {
syslog(LOG_ERR, "/: %m");
exit(EX_UNAVAILABLE);
}
if (setuid(pw->pw_uid) < 0) {
syslog(LOG_ERR, "%d: %m", pw->pw_uid);
exit(EX_NOPERM);
}
(void)setproctitle("icbd");
}

View File

@ -105,16 +105,16 @@ logger_init(void)
exit(EX_UNAVAILABLE);
}
if (setuid(pw->pw_uid) < 0) {
syslog(LOG_ERR, "%d: %m", pw->pw_uid);
exit(EX_NOPERM);
}
if (chdir("/") < 0) {
syslog(LOG_ERR, "chdir: %m");
exit(EX_UNAVAILABLE);
}
if (setuid(pw->pw_uid) < 0) {
syslog(LOG_ERR, "%d: %m", pw->pw_uid);
exit(EX_NOPERM);
}
event_init();
/* event for message processing */