moby/pkg/process
Sebastiaan van Stijn 735e250326
pkg/process: Alive(): fix PID 0, -1, negative values
unix.Kill() does not produce an error for PID 0, -1. As a result, checking
process.Alive() would return "true" for both 0 and -1 on macOS (and previously
on Linux as well).

Let's shortcut these values to consider them "not alive", to prevent someone
trying to kill them.

A basic test was added to check the behavior.

Given that the intent of these functions is to handle single processes, this patch
also prevents 0 and negative values to be used.

From KILL(2): https://man7.org/linux/man-pages/man2/kill.2.html

    If pid is positive, then signal sig is sent to the process with
    the ID specified by pid.

    If pid equals 0, then sig is sent to every process in the process
    group of the calling process.

    If pid equals -1, then sig is sent to every process for which the
    calling process has permission to send signals, except for
    process 1 (init), but see below.

    If pid is less than -1, then sig is sent to every process in the
    process group whose ID is -pid.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2022-11-04 01:50:26 +01:00
..
doc.go move pkg/system: process to a separate package 2022-11-04 01:50:23 +01:00
process_test.go pkg/process: Alive(): fix PID 0, -1, negative values 2022-11-04 01:50:26 +01:00
process_unix.go pkg/process: Alive(): fix PID 0, -1, negative values 2022-11-04 01:50:26 +01:00
process_windows.go pkg/pidfile, pkg/process: use single implementation for process alive 2022-11-04 01:50:26 +01:00