Skip to content

Commit 994b529

Browse files
committed
llbsolver: fix panic when requesting provenance on nil result
Signed-off-by: Tonis Tiigi <[email protected]>
1 parent 30cd3b4 commit 994b529

File tree

3 files changed

+42
-0
lines changed

3 files changed

+42
-0
lines changed

frontend/dockerfile/dockerfile_provenance_test.go

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -862,3 +862,40 @@ RUN --mount=type=secret,id=mysecret --mount=type=secret,id=othersecret --mount=t
862862
require.Equal(t, "default", pred.Invocation.Parameters.SSH[0].ID)
863863
require.True(t, pred.Invocation.Parameters.SSH[0].Optional)
864864
}
865+
866+
func testNilProvenance(t *testing.T, sb integration.Sandbox) {
867+
integration.CheckFeatureCompat(t, sb, integration.FeatureProvenance)
868+
ctx := sb.Context()
869+
870+
c, err := client.New(ctx, sb.Address())
871+
require.NoError(t, err)
872+
defer c.Close()
873+
874+
f := getFrontend(t, sb)
875+
876+
dockerfile := []byte(`
877+
FROM scratch
878+
ENV FOO=bar
879+
`)
880+
dir, err := integration.Tmpdir(
881+
t,
882+
fstest.CreateFile("Dockerfile", dockerfile, 0600),
883+
)
884+
require.NoError(t, err)
885+
886+
_, err = f.Solve(sb.Context(), c, client.SolveOpt{
887+
LocalDirs: map[string]string{
888+
builder.DefaultLocalNameDockerfile: dir,
889+
builder.DefaultLocalNameContext: dir,
890+
},
891+
FrontendAttrs: map[string]string{
892+
"attest:provenance": "mode=max",
893+
},
894+
Exports: []client.ExportEntry{
895+
{
896+
Type: client.ExporterImage,
897+
},
898+
},
899+
}, nil)
900+
require.NoError(t, err)
901+
}

frontend/dockerfile/dockerfile_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,7 @@ var allTests = integration.TestFuncs(
154154
testClientFrontendProvenance,
155155
testClientLLBProvenance,
156156
testSecretSSHProvenance,
157+
testNilProvenance,
157158
testSBOMScannerArgs,
158159
)
159160

solver/llbsolver/proc/provenance.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,10 @@ func ProvenanceProcessor(attrs map[string]string) llbsolver.Processor {
3232
return nil, errors.Errorf("no build info found for provenance %s", p.ID)
3333
}
3434

35+
if cp == nil {
36+
continue
37+
}
38+
3539
ref, ok := res.FindRef(p.ID)
3640
if !ok {
3741
return nil, errors.Errorf("could not find ref %s", p.ID)

0 commit comments

Comments
 (0)