diff options
Diffstat (limited to 'usr.sbin/syslogd/syslogd.c')
| -rw-r--r-- | usr.sbin/syslogd/syslogd.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/usr.sbin/syslogd/syslogd.c b/usr.sbin/syslogd/syslogd.c index 981428dbb8eb..8aed89e5dc36 100644 --- a/usr.sbin/syslogd/syslogd.c +++ b/usr.sbin/syslogd/syslogd.c @@ -3770,6 +3770,7 @@ validate(struct sockaddr *sa, const char *hname) int p_open(const char *prog, int *rpd) { + cap_rights_t rights; struct sigaction act = { }; int pfd[2], pd; pid_t pid; @@ -3821,6 +3822,10 @@ p_open(const char *prog, int *rpd) dprintf("Warning: cannot change pipe to PID %d to non-blocking" "behaviour.", pid); } + + if (cap_rights_limit(pd, + cap_rights_init(&rights, CAP_PDKILL, CAP_EVENT)) == -1) + err(1, "cap_rights_limit"); *rpd = pd; return (pfd[1]); } |
