Skip to content

Commit

Permalink
Merge pull request #210 from Villemoes/chdir
Browse files Browse the repository at this point in the history
chdir to / in parent
  • Loading branch information
chriskuehl authored Dec 10, 2020
2 parents 48ee49f + f6b6492 commit a43367c
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 0 deletions.
5 changes: 5 additions & 0 deletions dumb-init.c
Original file line number Diff line number Diff line change
Expand Up @@ -326,6 +326,11 @@ int main(int argc, char *argv[]) {
} else {
/* parent */
DEBUG("Child spawned with PID %d.\n", child_pid);
if (chdir("/") == -1) {
DEBUG("Unable to chdir(\"/\") (errno=%d %s)\n",
errno,
strerror(errno));
}
for (;;) {
int signum;
sigwait(&all_signals, &signum);
Expand Down
22 changes: 22 additions & 0 deletions tests/cwd_test.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import os
import shutil
from subprocess import run, PIPE

import pytest

@pytest.mark.usefixtures('both_debug_modes', 'both_setsid_modes')
def test_working_directories():
"""The child process must start in the working directory in which
dumb-init was invoked, but dumb-init itself should not keep a
reference to that."""

# We need absolute path to dumb-init since we pass cwd=/tmp to get
# predictable output - so we can't rely on dumb-init being found
# in the "." directory.
dumb_init = os.path.realpath(shutil.which('dumb-init'))
proc = run((dumb_init,
'sh', '-c', 'readlink /proc/$PPID/cwd && readlink /proc/$$/cwd'),
cwd="/tmp", stdout=PIPE, stderr=PIPE)

assert proc.returncode == 0
assert proc.stdout == b'/\n/tmp\n'

0 comments on commit a43367c

Please sign in to comment.