github.com/devseccon/trivy@v0.47.1-0.20231123133102-bd902a0bd996/pkg/fanal/vm/filesystem/xfs.go (about) 1 package filesystem 2 3 import ( 4 "io" 5 "io/fs" 6 7 "github.com/masahiro331/go-xfs-filesystem/xfs" 8 "golang.org/x/xerrors" 9 10 "github.com/devseccon/trivy/pkg/fanal/vm" 11 ) 12 13 type XFS struct{} 14 15 func (x XFS) New(sr io.SectionReader, cache vm.Cache[string, any]) (fs.FS, error) { 16 _, err := sr.Seek(0, io.SeekStart) 17 if err != nil { 18 return nil, xerrors.Errorf("failed to seek offset error: %w", err) 19 } 20 ok := xfs.Check(&sr) 21 if !ok { 22 return nil, ErrInvalidHeader 23 } 24 25 _, err = sr.Seek(0, io.SeekStart) 26 if err != nil { 27 return nil, xerrors.Errorf("failed to seek offset error: %w", err) 28 } 29 f, err := xfs.NewFS(sr, cache) 30 if err != nil { 31 return nil, xerrors.Errorf("new xfs filesystem error: %w", err) 32 } 33 return f, nil 34 }