mirror of
https://github.com/anchore/syft.git
synced 2025-11-17 16:33:21 +01:00
warn on errors from RPM DB parsing (#1200)
Signed-off-by: Alex Goodman <alex.goodman@anchore.com> Signed-off-by: Alex Goodman <alex.goodman@anchore.com>
This commit is contained in:
parent
999994f197
commit
c5dca001e2
@ -46,28 +46,21 @@ func parseRpmDB(resolver source.FilePathResolver, dbLocation source.Location, re
|
|||||||
var allPkgs []pkg.Package
|
var allPkgs []pkg.Package
|
||||||
|
|
||||||
for _, entry := range pkgList {
|
for _, entry := range pkgList {
|
||||||
p, err := newPkg(resolver, dbLocation, entry)
|
p := newPkg(resolver, dbLocation, entry)
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
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
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
p.SetID()
|
p.SetID()
|
||||||
allPkgs = append(allPkgs, *p)
|
allPkgs = append(allPkgs, p)
|
||||||
}
|
}
|
||||||
|
|
||||||
return allPkgs, nil
|
return allPkgs, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func newPkg(resolver source.FilePathResolver, dbLocation source.Location, entry *rpmdb.PackageInfo) (*pkg.Package, error) {
|
func newPkg(resolver source.FilePathResolver, dbLocation source.Location, entry *rpmdb.PackageInfo) pkg.Package {
|
||||||
fileRecords, err := extractRpmdbFileRecords(resolver, entry)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
metadata := pkg.RpmMetadata{
|
metadata := pkg.RpmMetadata{
|
||||||
Name: entry.Name,
|
Name: entry.Name,
|
||||||
Version: entry.Version,
|
Version: entry.Version,
|
||||||
@ -79,7 +72,7 @@ func newPkg(resolver source.FilePathResolver, dbLocation source.Location, entry
|
|||||||
License: entry.License,
|
License: entry.License,
|
||||||
Size: entry.Size,
|
Size: entry.Size,
|
||||||
ModularityLabel: entry.Modularitylabel,
|
ModularityLabel: entry.Modularitylabel,
|
||||||
Files: fileRecords,
|
Files: extractRpmdbFileRecords(resolver, entry),
|
||||||
}
|
}
|
||||||
|
|
||||||
p := pkg.Package{
|
p := pkg.Package{
|
||||||
@ -97,7 +90,7 @@ func newPkg(resolver source.FilePathResolver, dbLocation source.Location, entry
|
|||||||
}
|
}
|
||||||
|
|
||||||
p.SetID()
|
p.SetID()
|
||||||
return &p, nil
|
return p
|
||||||
}
|
}
|
||||||
|
|
||||||
// The RPM naming scheme is [name]-[version]-[release]-[arch], where version is implicitly expands to [epoch]:[version].
|
// The RPM naming scheme is [name]-[version]-[release]-[arch], where version is implicitly expands to [epoch]:[version].
|
||||||
@ -113,12 +106,13 @@ func toELVersion(metadata pkg.RpmMetadata) string {
|
|||||||
return fmt.Sprintf("%s-%s", metadata.Version, metadata.Release)
|
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)
|
var records = make([]pkg.RpmdbFileRecord, 0)
|
||||||
|
|
||||||
files, err := entry.InstalledFiles()
|
files, err := entry.InstalledFiles()
|
||||||
if err != nil {
|
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 {
|
for _, record := range files {
|
||||||
@ -138,5 +132,5 @@ func extractRpmdbFileRecords(resolver source.FilePathResolver, entry *rpmdb.Pack
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return records, nil
|
return records
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user