Construct guest runc options rather than forwarding host options#225
Open
dmcgowan wants to merge 1 commit into
Open
Construct guest runc options rather than forwarding host options#225dmcgowan wants to merge 1 commit into
dmcgowan wants to merge 1 commit into
Conversation
There was a problem hiding this comment.
Pull request overview
This PR prevents host-side runc task options from being forwarded into the VM by constructing a new, guest-safe runcOptions.Options Any for vminitd. It aims to forward only guest-meaningful fields, drop host-only fields, warn when certain dropped fields were set, and reject unsupported option types.
Changes:
- Added
guestRuncOptionsto construct a fresh allow-listedruncoptions message for the guest and emit warnings for explicitly dropped fields. - Updated
Createto forward the constructed guest options instead of the incoming host options blob. - Added unit tests covering nil/empty handling, allow-listed forwarding, stripping behavior, and unknown-type rejection.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.
| File | Description |
|---|---|
| internal/shim/task/service.go | Constructs guest-safe runc options and forwards those to the in-VM task service instead of forwarding host options directly. |
| internal/shim/task/options_test.go | Adds tests validating allow-listing, stripping, nil/empty behavior, and unknown options handling for guestRuncOptions. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
The runc Options proto mixes host-side shim config with guest-side
container config. Rather than filtering the incoming blob, always
construct a fresh Options for the guest with only the fields that are
meaningful inside the VM:
NoPivotRoot, NoNewKeyring forwarded
SystemdCgroup, Criu* dropped with a warning log (no systemd in
guest; checkpoint coordinated at VM level)
Root, BinaryName, dropped silently (host paths / identity,
ShimCgroup, IoUid/IoGid, meaningless inside the VM)
TaskApiAddress
An unrecognised options type is rejected with InvalidArgument rather
than forwarded opaquely; the shim knows the guest runtime.
Signed-off-by: Derek McGowan <derek@mcg.dev>
eaaa301 to
14da49f
Compare
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.
The runc Options proto mixes host-side shim config with guest-side
container config. Rather than filtering the incoming blob, always
construct a fresh Options for the guest with only the fields that are
meaningful inside the VM:
NoPivotRoot, NoNewKeyring forwarded
SystemdCgroup, Criu* dropped with a warning log (no systemd in
guest; checkpoint coordinated at VM level)
Root, BinaryName, dropped silently (host paths / identity,
ShimCgroup, IoUid/IoGid, meaningless inside the VM)
TaskApiAddress
An unrecognised options type is rejected with InvalidArgument rather
than forwarded opaquely; the shim knows the guest runtime.