Skip to content

Commit 46502c8

Browse files
committed
make the trivy parser not error out when receiving an empty file
1 parent e4e5b0c commit 46502c8

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

components/scanners/trivy/internal/transformer/transformer.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,10 @@ func (g *trivyTransformer) Transform(ctx context.Context) ([]*ocsf.Vulnerability
126126
}
127127
return nil, errors.Errorf("failed to read raw output file '%s': %w", g.rawOutFilePath, err)
128128
}
129-
129+
if len(b) == 0 {
130+
logger.Info("input file is empty, exiting without findings")
131+
return []*ocsf.VulnerabilityFinding{}, nil
132+
}
130133
var report sarifschemav210.SchemaJson
131134
if err := report.UnmarshalJSON(b); err != nil {
132135
return nil, errors.Errorf("failed to parse raw trivy output: %w", err)

components/scanners/trivy/internal/transformer/transformer_test.go

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package transformer_test
33
import (
44
"context"
55
_ "embed"
6+
"os"
67
"testing"
78
"time"
89

@@ -222,4 +223,20 @@ func TestTrivyTransformer_Transform(t *testing.T) {
222223
assert.NotNilf(t, affectedCode.EndLine, "Unexpected nil end line for vulnerability for finding %d", idx)
223224
}
224225
})
226+
t.Run("it should return an empty finding array when the input file is empty", func(t *testing.T) {
227+
emptyFilePath := "./testdata/empty_trivy.sarif.json"
228+
require.NoError(t, os.WriteFile(emptyFilePath, []byte{}, 0644))
229+
defer func() { require.NoError(t, os.Remove(emptyFilePath)) }()
230+
231+
ocsfTransformer, err := transformer.New(
232+
transformer.TrivyRawOutFilePath(emptyFilePath),
233+
transformer.TrivyTransformerWithTarget(transformer.TargetTypeContainer),
234+
transformer.TrivyTransformerWithClock(clock),
235+
)
236+
require.NoError(t, err)
237+
238+
findings, err := ocsfTransformer.Transform(ctx)
239+
require.NoError(t, err)
240+
assert.Empty(t, findings, "Expected no findings for an empty input file")
241+
})
225242
}

0 commit comments

Comments
 (0)