Skip to content

fix(build): validate ImageConfiguration in NewOptions - #2465

Open
Tyagiquamar wants to merge 1 commit into
chainguard-dev:mainfrom
Tyagiquamar:fix/newoptions-validate-image-config
Open

Tyagiquamar wants to merge 1 commit into
chainguard-dev:mainfrom
Tyagiquamar:fix/newoptions-validate-image-config

Conversation

@Tyagiquamar

Copy link
Copy Markdown

Problem

build.NewOptions() evaluates option overrides but never calls ic.Validate(), unlike build.New(). As a result, library callers using NewOptions() receive an ImageConfiguration whose fields (such as Format) are unvalidated. An invalid layer format (e.g. "squashfs") is accepted without error and silently degrades into a tar archive rather than returning a validation error.

Root Cause

NewOptions() calls resolveImageConfiguration() but omits the bc.ic.Validate() check that build.New() executes.

Fix

Added bc.ic.Validate() check at the end of build.NewOptions(), ensuring constructor contract consistency between NewOptions() and New(). Added unit test TestNewOptionsValidatesImageConfiguration in options_test.go.

Fixes #2423

NewOptions returns an ImageConfiguration whose fields (such as Format) were never validated via ic.Validate(), unlike the New constructor. An invalid layer format was accepted and silently defaulted to a tar archive instead of returning an error.

Fixes chainguard-dev#2423

Signed-off-by: Tyagiquamar <mohdquamartyagi@gmail.com>
@Tyagiquamar
Tyagiquamar force-pushed the fix/newoptions-validate-image-config branch from c7c4256 to 73467ae Compare September 6, 2026 05:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

build: NewOptions returns an unvalidated ImageConfiguration, so an invalid layer format silently builds a tar

2 participants