[Midnightbsd-cvs] [MidnightBSD/src] aaaa58: rc.subr: use _pidcmd to determine pid for protect
Lucas Holt
noreply at github.com
Thu Aug 25 13:55:31 EDT 2022
Branch: refs/heads/master
Home: https://github.com/MidnightBSD/src
Commit: aaaa5899dec5403603eb54f4bd67681a9951f0ac
https://github.com/MidnightBSD/src/commit/aaaa5899dec5403603eb54f4bd67681a9951f0ac
Author: Lucas Holt <luke at foolishgames.com>
Date: 2022-08-25 (Thu, 25 Aug 2022)
Changed paths:
M libexec/rc/rc.subr
Log Message:
-----------
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>
Obtained from: FreeBSD
More information about the Midnightbsd-cvs
mailing list