Skip to content
Merged
10 changes: 2 additions & 8 deletions alpine/distributionscanner.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ import (
"github.com/quay/claircore"
"github.com/quay/claircore/indexer"
"github.com/quay/claircore/osrelease"
"github.com/quay/claircore/pkg/tarfs"
)

// Alpine linux has patch releases but their security database
Expand Down Expand Up @@ -69,14 +68,9 @@ func (s *DistributionScanner) Scan(ctx context.Context, l *claircore.Layer) ([]*
"layer", l.Hash.String())
zlog.Debug(ctx).Msg("start")
defer zlog.Debug(ctx).Msg("done")
rc, err := l.Reader()
sys, err := l.FS()
if err != nil {
return nil, err
}
defer rc.Close()
sys, err := tarfs.New(rc)
if err != nil {
return nil, err
return nil, fmt.Errorf("alpine: unable to open layer: %w", err)
}
return s.scanFs(ctx, sys)
}
Expand Down
10 changes: 3 additions & 7 deletions apk/scanner.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,14 @@ import (
"bytes"
"context"
"errors"
"fmt"
"io/fs"
"runtime/trace"

"github.com/quay/zlog"

"github.com/quay/claircore"
"github.com/quay/claircore/indexer"
"github.com/quay/claircore/pkg/tarfs"
)

const (
Expand Down Expand Up @@ -59,13 +59,9 @@ func (*Scanner) Scan(ctx context.Context, layer *claircore.Layer) ([]*claircore.
zlog.Debug(ctx).Msg("start")
defer zlog.Debug(ctx).Msg("done")

rc, err := layer.Reader()
sys, err := layer.FS()
if err != nil {
return nil, err
}
sys, err := tarfs.New(rc)
if err != nil {
return nil, err
return nil, fmt.Errorf("apk: unable to open layer: %w", err)
}
b, err := fs.ReadFile(sys, installedFile)
switch {
Expand Down
8 changes: 1 addition & 7 deletions debian/distributionscanner.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ import (
"github.com/quay/claircore"
"github.com/quay/claircore/indexer"
"github.com/quay/claircore/osrelease"
"github.com/quay/claircore/pkg/tarfs"
)

var (
Expand Down Expand Up @@ -47,12 +46,7 @@ func (ds *DistributionScanner) Scan(ctx context.Context, l *claircore.Layer) ([]
zlog.Debug(ctx).Msg("start")
defer zlog.Debug(ctx).Msg("done")

rd, err := l.Reader()
if err != nil {
return nil, fmt.Errorf("debian: unable to open layer: %w", err)
}
defer rd.Close()
sys, err := tarfs.New(rd)
sys, err := l.FS()
if err != nil {
return nil, fmt.Errorf("debian: unable to open layer: %w", err)
}
Expand Down
12 changes: 3 additions & 9 deletions dpkg/distroless_scanner.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ import (

"github.com/quay/claircore"
"github.com/quay/claircore/indexer"
"github.com/quay/claircore/pkg/tarfs"
)

const (
Expand Down Expand Up @@ -63,14 +62,9 @@ func (ps *DistrolessScanner) Scan(ctx context.Context, layer *claircore.Layer) (
zlog.Debug(ctx).Msg("start")
defer zlog.Debug(ctx).Msg("done")

rd, err := layer.Reader()
sys, err := layer.FS()
if err != nil {
return nil, fmt.Errorf("opening layer failed: %w", err)
}
defer rd.Close()
sys, err := tarfs.New(rd)
if err != nil {
return nil, fmt.Errorf("opening layer failed: %w", err)
return nil, fmt.Errorf("dpkg-distroless: opening layer failed: %w", err)
}

var pkgs []*claircore.Package
Expand All @@ -80,7 +74,7 @@ func (ps *DistrolessScanner) Scan(ctx context.Context, layer *claircore.Layer) (
}
if d.Name() == "status.d" && d.IsDir() {
zlog.Debug(ctx).Str("path", p).Msg("found potential distroless dpkg db directory")
dbFiles, err := sys.ReadDir(p)
dbFiles, err := fs.ReadDir(sys, p)
if err != nil {
return fmt.Errorf("error reading DB directory: %w", err)
}
Expand Down
13 changes: 2 additions & 11 deletions dpkg/scanner.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ import (

"github.com/quay/claircore"
"github.com/quay/claircore/indexer"
"github.com/quay/claircore/pkg/tarfs"
)

const (
Expand Down Expand Up @@ -67,17 +66,9 @@ func (ps *Scanner) Scan(ctx context.Context, layer *claircore.Layer) ([]*clairco
zlog.Debug(ctx).Msg("start")
defer zlog.Debug(ctx).Msg("done")

// Grab a handle to the tarball, make sure we can seek.
// If we can't, we'd need another reader for every database found.
// It's cleaner to just demand that it's a seeker.
rd, err := layer.Reader()
sys, err := layer.FS()
if err != nil {
return nil, fmt.Errorf("opening layer failed: %w", err)
}
defer rd.Close()
sys, err := tarfs.New(rd)
if err != nil {
return nil, fmt.Errorf("opening layer failed: %w", err)
return nil, fmt.Errorf("dpkg: opening layer failed: %w", err)
}

// This is a map keyed by directory. A "score" of 2 means this is almost
Expand Down
10 changes: 2 additions & 8 deletions gobin/gobin.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ import (

"github.com/quay/claircore"
"github.com/quay/claircore/indexer"
"github.com/quay/claircore/pkg/tarfs"
)

// Detector detects go binaries and reports the packages used to build them.
Expand Down Expand Up @@ -74,14 +73,9 @@ func (Detector) Scan(ctx context.Context, l *claircore.Layer) ([]*claircore.Pack
zlog.Debug(ctx).Msg("start")
defer zlog.Debug(ctx).Msg("done")

rd, err := l.Reader()
sys, err := l.FS()
if err != nil {
return nil, err
}
defer rd.Close()
sys, err := tarfs.New(rd)
if err != nil {
return nil, err
return nil, fmt.Errorf("gobin: unable to open layer: %w", err)
}

var out []*claircore.Package
Expand Down
11 changes: 2 additions & 9 deletions java/packagescanner.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ import (
"github.com/quay/claircore"
"github.com/quay/claircore/indexer"
"github.com/quay/claircore/java/jar"
"github.com/quay/claircore/pkg/tarfs"
)

var (
Expand Down Expand Up @@ -116,15 +115,9 @@ func (s *Scanner) Scan(ctx context.Context, layer *claircore.Layer) ([]*claircor
if err := ctx.Err(); err != nil {
return nil, err
}

r, err := layer.Reader()
sys, err := layer.FS()
if err != nil {
return nil, err
}
defer r.Close()
sys, err := tarfs.New(r)
if err != nil {
return nil, err
return nil, fmt.Errorf("java: unable to open layer: %w", err)
}

ars, err := archives(ctx, sys)
Expand Down
19 changes: 3 additions & 16 deletions java/reposcanner.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,13 @@ package java

import (
"context"
"errors"
"fmt"
"io"
"runtime/trace"

"github.com/quay/zlog"

"github.com/quay/claircore"
"github.com/quay/claircore/indexer"
"github.com/quay/claircore/pkg/tarfs"
)

var (
Expand Down Expand Up @@ -53,21 +50,11 @@ func (rs *RepoScanner) Scan(ctx context.Context, layer *claircore.Layer) ([]*cla
if err := ctx.Err(); err != nil {
return nil, err
}

r, err := layer.Reader()
sys, err := layer.FS()
if err != nil {
return nil, err
}
defer r.Close()
ra, ok := r.(io.ReaderAt)
if !ok {
err := errors.New("unable to coerce to io.ReaderAt")
return nil, fmt.Errorf("opening layer failed: %w", err)
}
sys, err := tarfs.New(ra)
if err != nil {
return nil, err
return nil, fmt.Errorf("java: unable to open layer: %w", err)
}

ars, err := archives(ctx, sys)
if err != nil {
return nil, err
Expand Down
8 changes: 1 addition & 7 deletions osrelease/scanner.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ import (
"github.com/quay/claircore"
"github.com/quay/claircore/indexer"
"github.com/quay/claircore/pkg/cpe"
"github.com/quay/claircore/pkg/tarfs"
)

const (
Expand Down Expand Up @@ -65,12 +64,7 @@ func (s *Scanner) Scan(ctx context.Context, l *claircore.Layer) ([]*claircore.Di
zlog.Debug(ctx).Msg("start")
defer zlog.Debug(ctx).Msg("done")

r, err := l.Reader()
if err != nil {
return nil, fmt.Errorf("osrelease: unable to open layer: %w", err)
}
defer r.Close()
sys, err := tarfs.New(r)
sys, err := l.FS()
if err != nil {
return nil, fmt.Errorf("osrelease: unable to open layer: %w", err)
}
Expand Down
10 changes: 2 additions & 8 deletions python/packagescanner.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ import (
"github.com/quay/claircore"
"github.com/quay/claircore/indexer"
"github.com/quay/claircore/pkg/pep440"
"github.com/quay/claircore/pkg/tarfs"
)

var (
Expand Down Expand Up @@ -64,14 +63,9 @@ func (ps *Scanner) Scan(ctx context.Context, layer *claircore.Layer) ([]*clairco
return nil, err
}

r, err := layer.Reader()
sys, err := layer.FS()
if err != nil {
return nil, err
}
defer r.Close()
sys, err := tarfs.New(r)
if err != nil {
return nil, fmt.Errorf("python: unable to open tar: %w", err)
return nil, fmt.Errorf("python: unable to open layer: %w", err)
}

ms, err := findDeliciousEgg(ctx, sys)
Expand Down
10 changes: 2 additions & 8 deletions python/reposcanner.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ import (

"github.com/quay/claircore"
"github.com/quay/claircore/indexer"
"github.com/quay/claircore/pkg/tarfs"
)

var (
Expand Down Expand Up @@ -52,14 +51,9 @@ func (rs *RepoScanner) Scan(ctx context.Context, layer *claircore.Layer) ([]*cla
return nil, err
}

r, err := layer.Reader()
sys, err := layer.FS()
if err != nil {
return nil, err
}
defer r.Close()
sys, err := tarfs.New(r)
if err != nil {
return nil, fmt.Errorf("python: unable to open tar: %w", err)
return nil, fmt.Errorf("python: unable to open layer: %w", err)
}

ms, err := findDeliciousEgg(ctx, sys)
Expand Down
10 changes: 2 additions & 8 deletions rhel/distributionscanner.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ import (

"github.com/quay/claircore"
"github.com/quay/claircore/indexer"
"github.com/quay/claircore/pkg/tarfs"
)

var (
Expand Down Expand Up @@ -47,14 +46,9 @@ func (ds *DistributionScanner) Scan(ctx context.Context, l *claircore.Layer) ([]
"layer", l.Hash.String())
zlog.Debug(ctx).Msg("start")
defer zlog.Debug(ctx).Msg("done")
rd, err := l.Reader()
sys, err := l.FS()
if err != nil {
return nil, fmt.Errorf("rhel: unable to create layer reader: %w", err)
}
defer rd.Close()
sys, err := tarfs.New(rd)
if err != nil {
return nil, fmt.Errorf("rhel: unable to open tarfs: %w", err)
return nil, fmt.Errorf("rhel: unable to open layer: %w", err)
}
d, err := findDistribution(sys)
if err != nil {
Expand Down
8 changes: 1 addition & 7 deletions rhel/repositoryscanner.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ import (

"github.com/quay/claircore"
"github.com/quay/claircore/indexer"
"github.com/quay/claircore/pkg/tarfs"
"github.com/quay/claircore/rhel/dockerfile"
"github.com/quay/claircore/rhel/internal/common"
"github.com/quay/claircore/rhel/internal/containerapi"
Expand Down Expand Up @@ -178,12 +177,7 @@ func (r *RepositoryScanner) Scan(ctx context.Context, l *claircore.Layer) (repos
zlog.Debug(ctx).Msg("start")
defer zlog.Debug(ctx).Msg("done")

rd, err := l.Reader()
if err != nil {
return nil, fmt.Errorf("rhel: unable to open layer: %w", err)
}
defer rd.Close()
sys, err := tarfs.New(rd)
sys, err := l.FS()
if err != nil {
return nil, fmt.Errorf("rhel: unable to open layer: %w", err)
}
Expand Down
Loading