Skip to content

Commit

Permalink
warn on errors from RPM DB parsing (#1200)
Browse files Browse the repository at this point in the history
Signed-off-by: Alex Goodman <alex.goodman@anchore.com>

Signed-off-by: Alex Goodman <alex.goodman@anchore.com>
  • Loading branch information
wagoodman committed Sep 9, 2022
1 parent 999994f commit c5dca00
Showing 1 changed file with 11 additions and 17 deletions.
28 changes: 11 additions & 17 deletions syft/pkg/cataloger/rpm/parse_rpmdb.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,28 +46,21 @@ func parseRpmDB(resolver source.FilePathResolver, dbLocation source.Location, re
var allPkgs []pkg.Package

for _, entry := range pkgList {
p, err := newPkg(resolver, dbLocation, entry)
if err != nil {
return nil, err
}
p := newPkg(resolver, dbLocation, entry)

if !pkg.IsValid(p) {
if !pkg.IsValid(&p) {
log.Warnf("ignoring invalid package found in RPM DB: location=%q name=%q version=%q", dbLocation, entry.Name, entry.Version)
continue
}

p.SetID()
allPkgs = append(allPkgs, *p)
allPkgs = append(allPkgs, p)
}

return allPkgs, nil
}

func newPkg(resolver source.FilePathResolver, dbLocation source.Location, entry *rpmdb.PackageInfo) (*pkg.Package, error) {
fileRecords, err := extractRpmdbFileRecords(resolver, entry)
if err != nil {
return nil, err
}

func newPkg(resolver source.FilePathResolver, dbLocation source.Location, entry *rpmdb.PackageInfo) pkg.Package {
metadata := pkg.RpmMetadata{
Name: entry.Name,
Version: entry.Version,
Expand All @@ -79,7 +72,7 @@ func newPkg(resolver source.FilePathResolver, dbLocation source.Location, entry
License: entry.License,
Size: entry.Size,
ModularityLabel: entry.Modularitylabel,
Files: fileRecords,
Files: extractRpmdbFileRecords(resolver, entry),
}

p := pkg.Package{
Expand All @@ -97,7 +90,7 @@ func newPkg(resolver source.FilePathResolver, dbLocation source.Location, entry
}

p.SetID()
return &p, nil
return p
}

// The RPM naming scheme is [name]-[version]-[release]-[arch], where version is implicitly expands to [epoch]:[version].
Expand All @@ -113,12 +106,13 @@ func toELVersion(metadata pkg.RpmMetadata) string {
return fmt.Sprintf("%s-%s", metadata.Version, metadata.Release)
}

func extractRpmdbFileRecords(resolver source.FilePathResolver, entry *rpmdb.PackageInfo) ([]pkg.RpmdbFileRecord, error) {
func extractRpmdbFileRecords(resolver source.FilePathResolver, entry *rpmdb.PackageInfo) []pkg.RpmdbFileRecord {
var records = make([]pkg.RpmdbFileRecord, 0)

files, err := entry.InstalledFiles()
if err != nil {
return nil, err
log.Warnf("unable to parse listing of installed files for RPM DB entry: %s", err.Error())
return records
}

for _, record := range files {
Expand All @@ -138,5 +132,5 @@ func extractRpmdbFileRecords(resolver source.FilePathResolver, entry *rpmdb.Pack
})
}
}
return records, nil
return records
}

0 comments on commit c5dca00

Please sign in to comment.