Skip to content

Commit

Permalink
fix(purl): skip unsupported library type (aquasecurity#4577)
Browse files Browse the repository at this point in the history
  • Loading branch information
nikpivkin committed Jun 8, 2023
1 parent 52cbe79 commit c20d466
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 17 deletions.
11 changes: 3 additions & 8 deletions pkg/detector/library/detect.go
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
package library

import (
"errors"

"golang.org/x/xerrors"

ftypes "github.com/aquasecurity/trivy/pkg/fanal/types"
Expand All @@ -11,12 +9,9 @@ import (

// Detect scans and returns vulnerabilities of library
func Detect(libType string, pkgs []ftypes.Package) ([]types.DetectedVulnerability, error) {
driver, err := NewDriver(libType)
if err != nil {
if errors.Is(err, ErrSBOMSupportOnly) {
return nil, nil
}
return nil, xerrors.Errorf("failed to initialize a driver: %w", err)
driver, ok := NewDriver(libType)
if !ok {
return nil, nil
}

vulns, err := detect(driver, pkgs)
Expand Down
13 changes: 6 additions & 7 deletions pkg/detector/library/driver.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,8 @@ import (
"github.com/aquasecurity/trivy/pkg/types"
)

var ErrSBOMSupportOnly = xerrors.New("SBOM support only")

// NewDriver returns a driver according to the library type
func NewDriver(libType string) (Driver, error) {
func NewDriver(libType string) (Driver, bool) {
var ecosystem dbTypes.Ecosystem
var comparer compare.Comparer

Expand Down Expand Up @@ -64,18 +62,19 @@ func NewDriver(libType string) (Driver, error) {
comparer = compare.GenericComparer{}
case ftypes.Cocoapods:
log.Logger.Warn("CocoaPods is supported for SBOM, not for vulnerability scanning")
return Driver{}, ErrSBOMSupportOnly
return Driver{}, false
case ftypes.CondaPkg:
log.Logger.Warn("Conda package is supported for SBOM, not for vulnerability scanning")
return Driver{}, ErrSBOMSupportOnly
return Driver{}, false
default:
return Driver{}, xerrors.Errorf("unsupported type %s", libType)
log.Logger.Warnf("The %q library type is not supported for vulnerability scanning", libType)
return Driver{}, false
}
return Driver{
ecosystem: ecosystem,
comparer: comparer,
dbc: db.Config{},
}, nil
}, true
}

// Driver represents security advisories for each programming language
Expand Down
4 changes: 2 additions & 2 deletions pkg/detector/library/driver_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -164,8 +164,8 @@ func TestDriver_Detect(t *testing.T) {
_ = dbtest.InitDB(t, tt.fixtures)
defer db.Close()

driver, err := library.NewDriver(tt.libType)
require.NoError(t, err)
driver, ok := library.NewDriver(tt.libType)
require.True(t, ok)

got, err := driver.DetectVulnerabilities("", tt.args.pkgName, tt.args.pkgVer)
if tt.wantErr != "" {
Expand Down

0 comments on commit c20d466

Please sign in to comment.