p_candebug(9)

p_candebug9

Determine debuggability of a process

Usage

#include <sys/proc.h>

int

p_candebug(struct thread *td, struct proc *p);

Overview

This function can be used to determine if a given process p is debuggable by the thread td.

Sysctl variables

The following sysctl(8) variables directly influence the behaviour of p_candebug():

kern.securelevel

Debugging of the init process is not allowed if this variable is 1 or greater.

security.bsd.unprivileged_proc_debug

Must be set to a non-zero value to allow unprivileged processes access to the kernel's debug facilities.

Return values

The p_candebug() function returns 0 if the process denoted by p is debuggable by thread td, or a non-zero error return value otherwise.

Errors

[EACCESS]

The MAC subsystem denied debuggability.

[EAGAIN]

Process p is in the process of being exec(Ns, 'ed.)

[EPERM]

Thread td lacks super-user credentials and process p is executing a set-user-ID or set-group-ID executable.

[EPERM]

Thread td lacks super-user credentials and process p's group set is not a subset of td's effective group set.

[EPERM]

Thread td lacks super-user credentials and process p's user IDs do not match thread td's effective user ID.

[EPERM]

Process p denotes the initial process initproc() and the sysctl(8) variable kern.securelevel is greater than zero.

[ESRCH]

Process p is not visible to thread td as determined by cr_seeotheruids(9) or cr_seeothergids(9).

[ESRCH]

Thread td has been jailed and process p does not belong to the same jail as td.

[ESRCH]

The MAC subsystem denied debuggability.

From freebsd-manpages 6.0-5 in Debian 4.0 (Etch). Parsed by carta from the page's mdoc source.