summaryrefslogtreecommitdiffstats
path: root/src/privsep.c
diff options
context:
space:
mode:
authorRoy Marples <roy@marples.name>2020-09-06 13:53:08 +0100
committerRoy Marples <roy@marples.name>2020-09-06 13:53:08 +0100
commit6556019a6dc8f79dd5c235817cf95b98139b4eb4 (patch)
tree03a790444b156b2e72f113bff8db126e89955645 /src/privsep.c
parent8f4e3268eae80ed4cd53520cb36c228f127d0fcd (diff)
downloaddhcpcd-6556019a6dc8f79dd5c235817cf95b98139b4eb4.tar.xz
privsep: dump leases in a sandbox
Diffstat (limited to 'src/privsep.c')
-rw-r--r--src/privsep.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/privsep.c b/src/privsep.c
index 5a10d26a..3f1dc2d6 100644
--- a/src/privsep.c
+++ b/src/privsep.c
@@ -124,9 +124,10 @@ ps_dropprivs(struct dhcpcd_ctx *ctx)
if (chdir("/") == -1)
logerr("%s: chdir `/'", __func__);
- if (setgroups(1, &pw->pw_gid) == -1 ||
+ if ((setgroups(1, &pw->pw_gid) == -1 ||
setgid(pw->pw_gid) == -1 ||
- setuid(pw->pw_uid) == -1)
+ setuid(pw->pw_uid) == -1) &&
+ (errno != EPERM || ctx->options & DHCPCD_FORKED))
{
logerr("failed to drop privileges");
return -1;