Repository navigation
Conversation
|
Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA). View this failed invocation of the CLA check for more information. For the most up to date status, view the checks section at the bottom of the pull request. |
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
In EXECVE mode with a PID namespace,
pid::initNs()returned success immediatelyafter cloning the permanent dummy init. The child logged and continued if
PR_SET_PDEATHSIG,PR_SET_DUMPABLE, or its SIGCHLD disposition could not beconfigured, so nsjail could launch the requested workload without knowing that
the namespace init lacked expected lifecycle or isolation properties.
Change
Add a close-on-exec status pipe between the caller and dummy init. The caller now
waits for an explicit ready byte and kills/reaps the dummy init if setup fails.
The child treats the three required setup operations as fatal; setting its process
name remains best-effort.
Add an
LD_PRELOADtest helper that injects each failure only in the cloned dummyinit. On the unmodified baseline, all three cases still launch the workload and
return 0. With this change, each returns 255.
Validation
make clean && make)-Wall -Wextra -Werror-Meexecution: 0PR_SET_PDEATHSIGfailure: 255PR_SET_DUMPABLEfailure: 255sigaction(SIGCHLD)failure: 255supplementary-group test
clang-format --dry-run --Werrorgit diff --checkThe complete
make testrun stops at the existing supplementary-group test inthe privileged Docker environment: it expects 255 but returns 0 under that
container capability configuration. The failure occurs before the new Makefile
cases, which were also run directly and passed.
AI assistance disclosure: Codex assisted with source review, implementation,
test development, and drafting. The contributor reviewed the resulting patch and
is responsible for the submission.