github.com/devseccon/trivy@v0.47.1-0.20231123133102-bd902a0bd996/pkg/fanal/analyzer/language/rust/binary/binary.go (about) 1 package binary 2 3 import ( 4 "context" 5 "errors" 6 "os" 7 8 "golang.org/x/xerrors" 9 10 "github.com/aquasecurity/go-dep-parser/pkg/rust/binary" 11 "github.com/devseccon/trivy/pkg/fanal/analyzer" 12 "github.com/devseccon/trivy/pkg/fanal/analyzer/language" 13 "github.com/devseccon/trivy/pkg/fanal/types" 14 "github.com/devseccon/trivy/pkg/fanal/utils" 15 ) 16 17 func init() { 18 analyzer.RegisterAnalyzer(&rustBinaryLibraryAnalyzer{}) 19 } 20 21 const version = 1 22 23 type rustBinaryLibraryAnalyzer struct{} 24 25 func (a rustBinaryLibraryAnalyzer) Analyze(_ context.Context, input analyzer.AnalysisInput) (*analyzer.AnalysisResult, error) { 26 res, err := language.Analyze(types.RustBinary, input.FilePath, input.Content, binary.NewParser()) 27 if errors.Is(err, binary.ErrUnrecognizedExe) || errors.Is(err, binary.ErrNonRustBinary) { 28 return nil, nil 29 } else if err != nil { 30 return nil, xerrors.Errorf("rust binary parse error: %w", err) 31 } 32 return res, nil 33 } 34 35 func (a rustBinaryLibraryAnalyzer) Required(_ string, fileInfo os.FileInfo) bool { 36 return utils.IsExecutable(fileInfo) 37 } 38 39 func (a rustBinaryLibraryAnalyzer) Type() analyzer.Type { 40 return analyzer.TypeRustBinary 41 } 42 43 func (a rustBinaryLibraryAnalyzer) Version() int { 44 return version 45 }