Better disabling of compression types
This commit is contained in:
@@ -1,34 +0,0 @@
|
|||||||
//go:build !no_gpl && !no_obsolete
|
|
||||||
|
|
||||||
package decompress
|
|
||||||
|
|
||||||
import "errors"
|
|
||||||
|
|
||||||
// The types of compression supported by squashfs
|
|
||||||
const (
|
|
||||||
ZlibCompression = uint16(iota + 1)
|
|
||||||
LZMACompression
|
|
||||||
LZOCompression
|
|
||||||
XZCompression
|
|
||||||
LZ4Compression
|
|
||||||
ZSTDCompression
|
|
||||||
)
|
|
||||||
|
|
||||||
func GetDecompressor(compType uint16) (Decompressor, error) {
|
|
||||||
switch compType {
|
|
||||||
case ZlibCompression:
|
|
||||||
return Zlib{}, nil
|
|
||||||
case LZMACompression:
|
|
||||||
return Lzma{}, nil
|
|
||||||
case LZOCompression:
|
|
||||||
return Lzo{}, nil
|
|
||||||
case XZCompression:
|
|
||||||
return Xz{}, nil
|
|
||||||
case LZ4Compression:
|
|
||||||
return Lz4{}, nil
|
|
||||||
case ZSTDCompression:
|
|
||||||
return &Zstd{}, nil
|
|
||||||
default:
|
|
||||||
return nil, errors.New("invalid compression type. possible corrupted archive")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
//go:build no_gpl && !no_obsolete
|
|
||||||
|
|
||||||
package decompress
|
|
||||||
|
|
||||||
import "errors"
|
|
||||||
|
|
||||||
// The types of compression supported by squashfs
|
|
||||||
const (
|
|
||||||
ZlibCompression = uint16(iota + 1)
|
|
||||||
LZMACompression
|
|
||||||
LZOCompression
|
|
||||||
XZCompression
|
|
||||||
LZ4Compression
|
|
||||||
ZSTDCompression
|
|
||||||
)
|
|
||||||
|
|
||||||
func GetDecompressor(compType uint16) (Decompressor, error) {
|
|
||||||
switch compType {
|
|
||||||
case ZlibCompression:
|
|
||||||
return Zlib{}, nil
|
|
||||||
case LZMACompression:
|
|
||||||
return Lzma{}, nil
|
|
||||||
case LZOCompression:
|
|
||||||
return nil, errors.New("lzo compression is disable in this build with no_gpl")
|
|
||||||
case XZCompression:
|
|
||||||
return Xz{}, nil
|
|
||||||
case LZ4Compression:
|
|
||||||
return Lz4{}, nil
|
|
||||||
case ZSTDCompression:
|
|
||||||
return &Zstd{}, nil
|
|
||||||
default:
|
|
||||||
return nil, errors.New("invalid compression type. possible corrupted archive")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
//go:build no_obsolete && !no_gpl
|
|
||||||
|
|
||||||
package decompress
|
|
||||||
|
|
||||||
import "errors"
|
|
||||||
|
|
||||||
// The types of compression supported by squashfs
|
|
||||||
const (
|
|
||||||
ZlibCompression = uint16(iota + 1)
|
|
||||||
LZMACompression
|
|
||||||
LZOCompression
|
|
||||||
XZCompression
|
|
||||||
LZ4Compression
|
|
||||||
ZSTDCompression
|
|
||||||
)
|
|
||||||
|
|
||||||
func GetDecompressor(compType uint16) (Decompressor, error) {
|
|
||||||
switch compType {
|
|
||||||
case ZlibCompression:
|
|
||||||
return Zlib{}, nil
|
|
||||||
case LZMACompression:
|
|
||||||
return nil, errors.New("lzma compression is disable in this build with no_obsolete")
|
|
||||||
case LZOCompression:
|
|
||||||
return Lzo{}, nil
|
|
||||||
case XZCompression:
|
|
||||||
return Xz{}, nil
|
|
||||||
case LZ4Compression:
|
|
||||||
return Lz4{}, nil
|
|
||||||
case ZSTDCompression:
|
|
||||||
return &Zstd{}, nil
|
|
||||||
default:
|
|
||||||
return nil, errors.New("invalid compression type. possible corrupted archive")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
//go:build no_gpl && no_obsolete
|
|
||||||
|
|
||||||
package decompress
|
|
||||||
|
|
||||||
import "errors"
|
|
||||||
|
|
||||||
// The types of compression supported by squashfs
|
|
||||||
const (
|
|
||||||
ZlibCompression = uint16(iota + 1)
|
|
||||||
LZMACompression
|
|
||||||
LZOCompression
|
|
||||||
XZCompression
|
|
||||||
LZ4Compression
|
|
||||||
ZSTDCompression
|
|
||||||
)
|
|
||||||
|
|
||||||
func GetDecompressor(compType uint16) (Decompressor, error) {
|
|
||||||
switch compType {
|
|
||||||
case ZlibCompression:
|
|
||||||
return Zlib{}, nil
|
|
||||||
case LZMACompression:
|
|
||||||
return nil, errors.New("lzma compression is disable in this build with no_obsolete")
|
|
||||||
case LZOCompression:
|
|
||||||
return nil, errors.New("lzo compression is disable in this build with no_gpl")
|
|
||||||
case XZCompression:
|
|
||||||
return Xz{}, nil
|
|
||||||
case LZ4Compression:
|
|
||||||
return Lz4{}, nil
|
|
||||||
case ZSTDCompression:
|
|
||||||
return &Zstd{}, nil
|
|
||||||
default:
|
|
||||||
return nil, errors.New("invalid compression type. possible corrupted archive")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -11,6 +11,10 @@ import (
|
|||||||
|
|
||||||
type Lzma struct{}
|
type Lzma struct{}
|
||||||
|
|
||||||
|
func NewLzma() (Lzma, error) {
|
||||||
|
return Lzma{}, nil
|
||||||
|
}
|
||||||
|
|
||||||
func (l Lzma) Decompress(data []byte) ([]byte, error) {
|
func (l Lzma) Decompress(data []byte) ([]byte, error) {
|
||||||
rdr, err := lzma.NewReader(bytes.NewReader(data))
|
rdr, err := lzma.NewReader(bytes.NewReader(data))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -0,0 +1,17 @@
|
|||||||
|
//go:build no_obsolete
|
||||||
|
|
||||||
|
package decompress
|
||||||
|
|
||||||
|
import (
|
||||||
|
"errors"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Lzma struct{}
|
||||||
|
|
||||||
|
func NewLzma() (Lzma, error) {
|
||||||
|
return Lzma{}, errors.New("lzma compression is disable in this build with no_obsolete")
|
||||||
|
}
|
||||||
|
|
||||||
|
func (l Lzma) Decompress(data []byte) ([]byte, error) {
|
||||||
|
return nil, errors.New("lzma compression is disable in this build with no_obsolete")
|
||||||
|
}
|
||||||
@@ -10,6 +10,10 @@ import (
|
|||||||
|
|
||||||
type Lzo struct{}
|
type Lzo struct{}
|
||||||
|
|
||||||
|
func NewLzo() (Lzo, error) {
|
||||||
|
return Lzo{}, nil
|
||||||
|
}
|
||||||
|
|
||||||
func (l Lzo) Decompress(data []byte) ([]byte, error) {
|
func (l Lzo) Decompress(data []byte) ([]byte, error) {
|
||||||
return lzo.Decompress1X(bytes.NewReader(data), len(data), 0)
|
return lzo.Decompress1X(bytes.NewReader(data), len(data), 0)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,15 @@
|
|||||||
|
//go:build no_gpl
|
||||||
|
|
||||||
|
package decompress
|
||||||
|
|
||||||
|
import "errors"
|
||||||
|
|
||||||
|
type Lzo struct{}
|
||||||
|
|
||||||
|
func NewLzo() (Lzo, error) {
|
||||||
|
return Lzo{}, errors.New("lzo compression is disable in this build with no_gpl")
|
||||||
|
}
|
||||||
|
|
||||||
|
func (l Lzo) Decompress(data []byte) ([]byte, error) {
|
||||||
|
return nil, errors.New("lzo compression is disable in this build with no_gpl")
|
||||||
|
}
|
||||||
+21
-3
@@ -55,9 +55,27 @@ func NewReader(r io.ReaderAt) (rdr *Reader, err error) {
|
|||||||
if !rdr.Superblock.ValidVersion() {
|
if !rdr.Superblock.ValidVersion() {
|
||||||
return nil, ErrorVersion
|
return nil, ErrorVersion
|
||||||
}
|
}
|
||||||
rdr.d, err = decompress.GetDecompressor(rdr.Superblock.CompType)
|
switch rdr.Superblock.CompType {
|
||||||
if err != nil {
|
case ZlibCompression:
|
||||||
return nil, err
|
rdr.d = decompress.Zlib{}
|
||||||
|
case LZMACompression:
|
||||||
|
rdr.d, err = decompress.NewLzma()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
case LZOCompression:
|
||||||
|
rdr.d, err = decompress.NewLzo()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
case XZCompression:
|
||||||
|
rdr.d = decompress.Xz{}
|
||||||
|
case LZ4Compression:
|
||||||
|
rdr.d = decompress.Lz4{}
|
||||||
|
case ZSTDCompression:
|
||||||
|
rdr.d = decompress.Zstd{}
|
||||||
|
default:
|
||||||
|
return nil, errors.New("invalid compression type. possible corrupted archive")
|
||||||
}
|
}
|
||||||
rdr.Root, err = rdr.directoryFromRef(rdr.Superblock.RootInodeRef, "")
|
rdr.Root, err = rdr.directoryFromRef(rdr.Superblock.RootInodeRef, "")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
Reference in New Issue
Block a user