1
0
mirror of https://git.FreeBSD.org/src.git synced 2024-11-25 07:49:18 +00:00
freebsd/libexec
Mariusz Zaborski 6ba108e52d rc.subr: use _pidcmd to determine pid for protect
This is a more reliable method that accounts for existing pidfiles,
procname and interpreter settings.

Current method of obtaining the pid for oomprotect="YES"|"ALL" processes
in certain cases fails to find a unique pid.

One such case are rc.d scripts defining command as:
command="daemon"

which results in all processes started via daemon being selected and
passed to protect(1) which fails and prints usage:

$ /etc/rc.d/exampled restart
Stopping exampled.
Starting exampled.
usage: protect [-i] command
   protect [-cdi] -g pgrp | -p pid

Running the same with -x reveals what happens:

+ pid='3051 4268 4390 4421 4427 4470 4588 4733 4740 4870 4949 4954 4979
5835 5866 55487 55583 56525 57643 57789 57882 58072 58167 99419'
+ /usr/bin/protect -p 3051 4268 4390 4421 4427 4470 4588 4733 4740 4870
4949 4954 4979 5835 5866 55487 55583 56525 57643 57789 57882 58072 58167
99419
usage: protect [-i] command
   protect [-cdi] -g pgrp | -p pid

We have a more reliable way of obtaining pid already defined in rc.subr
and available when protect(1) needs it. We can simply `eval $_pidcmd`
which also invokes `check_process` but properly accounts for existing
pidfile, procname and interpreter settings.

With the change the pidfile is properly obtained.

Submitted by:	Adam Wolk <a.wolk at fudosecurity.com>
Sponsored by:	Fudo Security
Differential Revision:	https://reviews.freebsd.org/D30367
2021-06-24 20:14:31 +02:00
..
atf
atrun
blacklistd-helper
bootpd
comsat
dma
fingerd
flua
ftpd
getty libexec/getty/ttys.5: document correct "dialup" flag. 2021-06-01 17:05:16 +01:00
hyperv
mail.local
makewhatis.local
mknetid
phttpget
pppoed
rbootd
rc rc.subr: use _pidcmd to determine pid for protect 2021-06-24 20:14:31 +02:00
revnetgroup
rpc.rquotad pkgbase: Create a FreeBSD-nfs package 2021-06-19 17:49:50 +02:00
rpc.rstatd
rpc.rusersd
rpc.rwalld
rpc.sprayd
rtld-elf rtld-elf: Check the return value of obj_enforce_relro() 2021-06-22 09:10:48 +01:00
rtld-elf32
save-entropy
smrsh
talkd
tcpd
telnetd
tests
tftp-proxy
tftpd
ulog-helper
ypxfr
Makefile
Makefile.amd64
Makefile.i386
Makefile.inc