mirror of
https://github.com/anchore/syft.git
synced 2026-03-29 21:23:24 +02:00
* chore: centralize temp files and prefer streaming IO Catalogers that create temp files ad-hoc can easily forget cleanup, leaking files on disk. Similarly, io.ReadAll is convenient but risks OOM on large or malicious inputs. Introduce internal/tmpdir to manage all cataloger temp storage under a single root directory with automatic cleanup. Prefer streaming parsers (bufio.Scanner, json/yaml.NewDecoder, io.LimitReader) over buffering entire inputs into memory. Add ruleguard rules to enforce both practices going forward. Signed-off-by: Will Murphy <willmurphyscode@users.noreply.github.com> * chore: go back to old release parsing Signed-off-by: Will Murphy <willmurphyscode@users.noreply.github.com> * simplify to limit reader in version check Signed-off-by: Will Murphy <willmurphyscode@users.noreply.github.com> * chore: regex change postponed Signed-off-by: Will Murphy <willmurphyscode@users.noreply.github.com> * simplify supplement release to limitreader Signed-off-by: Will Murphy <willmurphyscode@users.noreply.github.com> --------- Signed-off-by: Will Murphy <willmurphyscode@users.noreply.github.com>
37 lines
768 B
Go
37 lines
768 B
Go
package licenses
|
|
|
|
import (
|
|
"context"
|
|
"io"
|
|
)
|
|
|
|
func (s *scanner) FindEvidence(_ context.Context, reader io.Reader) (evidence []Evidence, content []byte, err error) {
|
|
if s.scanner == nil {
|
|
return nil, nil, nil
|
|
}
|
|
|
|
content, err = io.ReadAll(reader) //nolint:gocritic // license scanner requires full content
|
|
if err != nil {
|
|
return nil, nil, err
|
|
}
|
|
|
|
cov := s.scanner(content)
|
|
if cov.Percent < s.coverageThreshold {
|
|
// unknown or no licenses here
|
|
// => check return content to Search to process
|
|
return nil, content, nil
|
|
}
|
|
|
|
evidence = make([]Evidence, 0)
|
|
for _, m := range cov.Match {
|
|
evidence = append(evidence, Evidence{
|
|
ID: m.ID,
|
|
Type: m.Type,
|
|
Start: m.Start,
|
|
End: m.End,
|
|
IsURL: m.IsURL,
|
|
})
|
|
}
|
|
return evidence, content, nil
|
|
}
|