Skip to content

Commit b1c1048

Browse files
authored
Merge pull request #3734 from crazy-max/build-fix-empty-syntax
build: reject empty BUILDKIT_SYNTAX overrides
2 parents 7ac8168 + 7c44ec1 commit b1c1048

2 files changed

Lines changed: 14 additions & 1 deletion

File tree

build/opt.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -298,7 +298,11 @@ func toSolveOpt(ctx context.Context, np *noderesolver.ResolvedNode, multiDriver
298298
}
299299

300300
if v, ok := opt.BuildArgs["BUILDKIT_SYNTAX"]; ok {
301-
p := strings.SplitN(strings.TrimSpace(v), " ", 2)
301+
cmdline := strings.TrimSpace(v)
302+
if cmdline == "" {
303+
return nil, nil, errors.Errorf("empty BUILDKIT_SYNTAX build-arg is invalid, use --build-arg BUILDKIT_SYNTAX without '=' for optional behavior")
304+
}
305+
p := strings.SplitN(cmdline, " ", 2)
302306
so.Frontend = "gateway.v0"
303307
so.FrontendAttrs["source"] = p[0]
304308
so.FrontendAttrs["cmdline"] = v

tests/build.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ var buildTests = []func(t *testing.T, sb integration.Sandbox){
6262
testBuildProgress,
6363
testBuildAnnotations,
6464
testBuildBuildArgNoKey,
65+
testBuildBuildKitSyntaxEmpty,
6566
testBuildLabelNoKey,
6667
testBuildCacheExportNotSupported,
6768
testBuildOCIExportNotSupported,
@@ -759,6 +760,14 @@ func testBuildBuildArgNoKey(t *testing.T, sb integration.Sandbox) {
759760
require.Equal(t, `ERROR: invalid key-value pair "=TEST_STRING": empty key`, strings.TrimSpace(string(out)))
760761
}
761762

763+
func testBuildBuildKitSyntaxEmpty(t *testing.T, sb integration.Sandbox) {
764+
dir := createTestProject(t)
765+
cmd := buildxCmd(sb, withArgs("build", "--build-arg", "BUILDKIT_SYNTAX=", dir))
766+
out, err := cmd.CombinedOutput()
767+
require.Error(t, err, string(out))
768+
require.Contains(t, string(out), `empty BUILDKIT_SYNTAX build-arg is invalid, use --build-arg BUILDKIT_SYNTAX without '=' for optional behavior`)
769+
}
770+
762771
func testBuildLabelNoKey(t *testing.T, sb integration.Sandbox) {
763772
dir := createTestProject(t)
764773
cmd := buildxCmd(sb, withArgs("build", "--label", "=TEST_STRING", dir))

0 commit comments

Comments
 (0)