Files
trivy/pkg/fanal/vm/filesystem/ext4.go
2022-11-27 11:45:00 +02:00

35 lines
715 B
Go

package filesystem
import (
"io"
"io/fs"
"github.com/masahiro331/go-ext4-filesystem/ext4"
"golang.org/x/xerrors"
"github.com/aquasecurity/trivy/pkg/fanal/vm"
)
type EXT4 struct{}
func (e EXT4) New(sr io.SectionReader, cache vm.Cache) (fs.FS, error) {
_, err := sr.Seek(0, io.SeekStart)
if err != nil {
return nil, xerrors.Errorf("failed to seek offset error: %w", err)
}
ok := ext4.Check(&sr)
if !ok {
return nil, ErrInvalidHeader
}
_, err = sr.Seek(0, io.SeekStart)
if err != nil {
return nil, xerrors.Errorf("failed to seek offset error: %w", err)
}
f, err := ext4.NewFS(sr, cache)
if err != nil {
return nil, xerrors.Errorf("new ext4 filesystem error: %w", err)
}
return f, nil
}