aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Johnston <markj@FreeBSD.org>2026-07-10 20:25:54 +0000
committerMark Johnston <markj@FreeBSD.org>2026-08-06 12:52:28 +0000
commitffad04235a767852aaac3f1fce673a9c78c2753b (patch)
tree611da0c597989d5208f5133e0b93683137e5517d
parent30758138f2e36d89bc30cb686796ccc4dfa8b475 (diff)
syslogd: Limit rights on procdescs
Reviewed by: jfree, kib MFC after: 3 weeks Differential Revision: https://reviews.freebsd.org/D58160 (cherry picked from commit 24816abb8740c387ad4aba4ad2fa4c23b191c351)
-rw-r--r--usr.sbin/syslogd/syslogd.c5
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]);
}