Repository navigation
runtime: preserve sandbox controls across explicit exec envs - #3440
adilalperenciftci wants to merge 1 commit into
Conversation
Signed-off-by: Adil Alperen Çiftci <adilalperenciftci@users.noreply.github.com>
There was a problem hiding this comment.
Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota.
An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.
|
Thanks, reviewed and folded into the batch #3456 with your authorship kept on the commit. One change on top: the controls are snapshotted at startup rather than copied from live 🤖 Generated with Claude Code |
|
Merged as part of #3456 (merge 9364d6b), with your authorship on the commit. Thank you, @adilalperenciftci: this was a real fix, carefully tested, and it's appreciated. 🤖 Generated with Claude Code |
pos += snprintf(...) could pass buf[8192] (snprintf returns the would-be length), so the following (pos+1)-byte write read past the stack buffer. Fail the spawn (-1) when an entry does not fit, on Linux and BSD. Adds sandbox_grant_overflow. ATOMIC_VAR_INIT is deprecated since C17. docs: note aether-lang-dev#3436 and aether-lang-dev#3440 behaviour in containment-sandbox.md. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Summary
I reproduced an allowed
execvedropping cross-process containment whenever the caller supplied its ownenvp. Omitting the sandbox entries, or replacing them with empty/stale values, started the child without the preload layer and grant source.This change:
LD_PRELOAD,AETHER_SANDBOX_*, andAETHER_CAPSICUMentries;EPERMif an active sandbox has no non-empty preload or grant source to carry forward;E2BIGbeyond that bound.Verification
ONLY=explicitplus currentLD_PRELOADand grant source all reached the child.make check-tests: passed.make test: 634 passed, 0 failed on Ubuntu VM.make check-changelog: passed.The optional i386 clone probe skipped because Zig is not installed in the VM.