Skip to content

Commit 6301085

Browse files
authored
Handle file contents/checksum only when generating a report (#1209)
Signed-off-by: egibs <[email protected]>
1 parent 57b4150 commit 6301085

File tree

1 file changed

+14
-13
lines changed

1 file changed

+14
-13
lines changed

pkg/action/scan.go

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -84,19 +84,6 @@ func scanSinglePath(ctx context.Context, c malcontent.Config, path string, ruleF
8484
})
8585
buf := readPool.Get(readBuffer) //nolint:nilaway // the buffer pool is created above
8686

87-
var fc bytes.Buffer
88-
_, err = io.CopyBuffer(&fc, io.LimitReader(f, maxBytes), buf)
89-
if err != nil {
90-
return nil, err
91-
}
92-
93-
h := sha256.New()
94-
_, err = h.Write(fc.Bytes())
95-
if err != nil {
96-
return nil, err
97-
}
98-
checksum := fmt.Sprintf("%x", h.Sum(nil))
99-
10087
mime := "<unknown>"
10188
kind, err := programkind.File(ctx, path)
10289
if err != nil && !interactive(c) {
@@ -152,6 +139,20 @@ func scanSinglePath(ctx context.Context, c malcontent.Config, path string, ruleF
152139
return fr, nil
153140
}
154141

142+
// Only retrieve the file's contents and calculate its checksum if we need to generate a report
143+
var fc bytes.Buffer
144+
_, err = io.CopyBuffer(&fc, io.LimitReader(f, maxBytes), buf)
145+
if err != nil {
146+
return nil, err
147+
}
148+
149+
h := sha256.New()
150+
_, err = h.Write(fc.Bytes())
151+
if err != nil {
152+
return nil, err
153+
}
154+
checksum := fmt.Sprintf("%x", h.Sum(nil))
155+
155156
fr, err := report.Generate(ctx, path, mrs, c, archiveRoot, logger, fc.Bytes(), size, checksum, kind, risk)
156157
if err != nil {
157158
return nil, NewFileReportError(err, path, TypeGenerateError)

0 commit comments

Comments
 (0)