Skip to content

Commit

Permalink
Merge pull request #263 from anchore/add-source-to-rpmdb-cataloger
Browse files Browse the repository at this point in the history
Add source to packages found by RPMdb cataloger
  • Loading branch information
wagoodman committed Nov 12, 2020
2 parents 9581a03 + 7964c27 commit dad1d96
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 6 deletions.
8 changes: 4 additions & 4 deletions syft/cataloger/rpmdb/cataloger.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,15 +35,15 @@ func (c *Cataloger) Catalog(resolver scope.Resolver) ([]pkg.Package, error) {
}

var pkgs []pkg.Package
for _, ref := range fileMatches {
dbContents, err := resolver.FileContentsByRef(ref)
for _, dbRef := range fileMatches {
dbContents, err := resolver.FileContentsByRef(dbRef)
if err != nil {
return nil, err
}

pkgs, err = parseRpmDB(resolver, strings.NewReader(dbContents))
pkgs, err = parseRpmDB(resolver, dbRef, strings.NewReader(dbContents))
if err != nil {
return nil, fmt.Errorf("unable to catalog rpmdb package=%+v: %w", ref.Path, err)
return nil, fmt.Errorf("unable to catalog rpmdb package=%+v: %w", dbRef.Path, err)
}
}
return pkgs, nil
Expand Down
3 changes: 2 additions & 1 deletion syft/cataloger/rpmdb/parse_rpmdb.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import (
)

// parseApkDb parses an "Packages" RPM DB and returns the Packages listed within it.
func parseRpmDB(resolver scope.FileResolver, reader io.Reader) ([]pkg.Package, error) {
func parseRpmDB(resolver scope.FileResolver, dbRef file.Reference, reader io.Reader) ([]pkg.Package, error) {
f, err := ioutil.TempFile("", internal.ApplicationName+"-rpmdb")
if err != nil {
return nil, fmt.Errorf("failed to create temp rpmdb file: %w", err)
Expand Down Expand Up @@ -57,6 +57,7 @@ func parseRpmDB(resolver scope.FileResolver, reader io.Reader) ([]pkg.Package, e
Name: entry.Name,
Version: fmt.Sprintf("%s-%s", entry.Version, entry.Release), // this is what engine does
//Version: fmt.Sprintf("%d:%s-%s.%s", entry.Epoch, entry.Version, entry.Release, entry.Arch),
Source: []file.Reference{dbRef},
Type: pkg.RpmPkg,
MetadataType: pkg.RpmdbMetadataType,
Metadata: pkg.RpmdbMetadata{
Expand Down
6 changes: 5 additions & 1 deletion syft/cataloger/rpmdb/parse_rpmdb_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,8 @@ func (r *rpmdbTestFileResolverMock) RelativeFileByPath(file.Reference, string) (
}

func TestParseRpmDB(t *testing.T) {
dbRef := file.NewFileReference("test-path")

tests := []struct {
fixture string
expected map[string]pkg.Package
Expand All @@ -54,6 +56,7 @@ func TestParseRpmDB(t *testing.T) {
"dive": {
Name: "dive",
Version: "0.9.2-1",
Source: []file.Reference{dbRef},
Type: pkg.RpmPkg,
MetadataType: pkg.RpmdbMetadataType,
Metadata: pkg.RpmdbMetadata{
Expand All @@ -79,6 +82,7 @@ func TestParseRpmDB(t *testing.T) {
"dive": {
Name: "dive",
Version: "0.9.2-1",
Source: []file.Reference{dbRef},
Type: pkg.RpmPkg,
MetadataType: pkg.RpmdbMetadataType,
Metadata: pkg.RpmdbMetadata{
Expand Down Expand Up @@ -114,7 +118,7 @@ func TestParseRpmDB(t *testing.T) {

fileResolver := newTestFileResolver(test.ignorePaths)

actual, err := parseRpmDB(fileResolver, fixture)
actual, err := parseRpmDB(fileResolver, dbRef, fixture)
if err != nil {
t.Fatalf("failed to parse rpmdb: %+v", err)
}
Expand Down

0 comments on commit dad1d96

Please sign in to comment.