pledge(2): stdio: permit restricted profil(2) for moncontrol(3)
authorcheloha <cheloha@openbsd.org>
Fri, 2 Jun 2023 17:44:29 +0000 (17:44 +0000)
committercheloha <cheloha@openbsd.org>
Fri, 2 Jun 2023 17:44:29 +0000 (17:44 +0000)
commitb7a7cb6aecabdb49bf7d40b2372c9608cf08b53b
tree91156b3f91b1e272c385e9535968ea82e3ef8b80
parent76a537bb0564c3ca1c7a5888e2794b2164253227
pledge(2): stdio: permit restricted profil(2) for moncontrol(3)

Currently, pledged '-pg' binaries get killed in _mcleanup() when they
try to disable profil(2) via moncontrol(3).

Disabling profil(2) is harmless.  Add profil(2) to the "stdio"
pledge(2) promise and permit profil(2) calls when the scale argument
is zero.  Enabling profil(2) remains forbidden in pledged processes.

This gets us one step closer to making '-pg' binaries compatible with
pledge(2).  The next step is to decide how to exfiltrate the profiling
data from the process during _mcleanup().

Prompted by semarie@.  Cleaned up by deraadt@.  With input from
deraadt@, espie@, and semarie@.

"Looks good" deraadt@
pledge(2) pieces ok semarie@
lib/libc/sys/pledge.2
sys/kern/kern_pledge.c
sys/kern/subr_prof.c
sys/sys/pledge.h