From 246a31cd7326d846bfeae93b3b57757da583dfd4 Mon Sep 17 00:00:00 2001 From: Simon Kelley Date: Tue, 6 Feb 2018 17:27:55 +0000 Subject: [PATCH] Change ownership of pid file, to keep systemd happy. --- debian/changelog | 8 +++++++- src/dnsmasq.c | 9 ++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 8b2a2d6..332589b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -5,7 +5,13 @@ dnsmasq (2.79-1) unstable; urgency=low * Fix exit code for dhcp_release6 (closes: #833596) * Add project homepage to control file. (closes: #887764) - -- Simon Kelley Sat, 20 Jan 2018 22:17:01 +0000 + -- Simon Kelley Tue, 6 Feb 2018 17:23:21 +0000 + +dnsmasq (2.78-2) unstable; urgency=high + + * Change ownership of pid file, to keep systemd happy. (closes: #889336) + + -- Simon Kelley Tue, 6 Feb 2018 17:21:30 +0000 dnsmasq (2.78-1) unstable; urgency=high diff --git a/src/dnsmasq.c b/src/dnsmasq.c index 1ae7aad..f07fc61 100644 --- a/src/dnsmasq.c +++ b/src/dnsmasq.c @@ -541,7 +541,14 @@ int main (int argc, char **argv) } else { - if (!read_write(fd, (unsigned char *)daemon->namebuff, strlen(daemon->namebuff), 0)) + /* We're still running as root here. Change the ownership of the PID file + to the user we will be running as. Note that this is not to allow + us to delete the file, since that depends on the permissions + of the directory containing the file. That directory will + need to by owned by the dnsmasq user, and the ownership of the + file has to match, to keep systemd >273 happy. */ + if ((getuid() == 0 && ent_pw && ent_pw->pw_uid != 0 && fchown(fd, ent_pw->pw_uid, ent_pw->pw_gid) == -1) || + !read_write(fd, (unsigned char *)daemon->namebuff, strlen(daemon->namebuff), 0)) err = 1; else {