mirror of
https://github.com/anchore/syft.git
synced 2026-02-12 02:26:42 +01:00
fix getting union reader for sif images (#2631)
Signed-off-by: Alex Goodman <wagoodman@users.noreply.github.com>
This commit is contained in:
parent
e72dec8e9e
commit
25ae7bf55f
@ -66,7 +66,15 @@ func (i *Cataloger) Catalog(resolver file.Resolver) (map[file.Coordinates]file.E
|
|||||||
log.WithFields("error", err).Warnf("unable to get file contents for %q", loc.RealPath)
|
log.WithFields("error", err).Warnf("unable to get file contents for %q", loc.RealPath)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
exec, err := processExecutable(loc, reader.(unionreader.UnionReader))
|
|
||||||
|
uReader, err := unionreader.GetUnionReader(reader)
|
||||||
|
if err != nil {
|
||||||
|
// TODO: known-unknowns
|
||||||
|
log.WithFields("error", err).Warnf("unable to get union reader for %q", loc.RealPath)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
exec, err := processExecutable(loc, uReader)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.WithFields("error", err).Warnf("unable to process executable %q", loc.RealPath)
|
log.WithFields("error", err).Warnf("unable to process executable %q", loc.RealPath)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -9,7 +9,7 @@ import (
|
|||||||
"github.com/anchore/syft/internal/log"
|
"github.com/anchore/syft/internal/log"
|
||||||
)
|
)
|
||||||
|
|
||||||
// unionReader is a single interface with all reading functions needed by multi-arch binary catalogers
|
// UnionReader is a single interface with all reading functions needed by multi-arch binary catalogers
|
||||||
// cataloger.
|
// cataloger.
|
||||||
type UnionReader interface {
|
type UnionReader interface {
|
||||||
io.Reader
|
io.Reader
|
||||||
@ -18,7 +18,7 @@ type UnionReader interface {
|
|||||||
io.Closer
|
io.Closer
|
||||||
}
|
}
|
||||||
|
|
||||||
// getReaders extracts one or more io.ReaderAt objects representing binaries that can be processed (multiple binaries in the case for multi-architecture binaries).
|
// GetReaders extracts one or more io.ReaderAt objects representing binaries that can be processed (multiple binaries in the case for multi-architecture binaries).
|
||||||
func GetReaders(f UnionReader) ([]io.ReaderAt, error) {
|
func GetReaders(f UnionReader) ([]io.ReaderAt, error) {
|
||||||
if macho.IsUniversalMachoBinary(f) {
|
if macho.IsUniversalMachoBinary(f) {
|
||||||
machoReaders, err := macho.ExtractReaders(f)
|
machoReaders, err := macho.ExtractReaders(f)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user