Better disabling of compression types
This commit is contained in:
+21
-3
@@ -55,9 +55,27 @@ func NewReader(r io.ReaderAt) (rdr *Reader, err error) {
|
||||
if !rdr.Superblock.ValidVersion() {
|
||||
return nil, ErrorVersion
|
||||
}
|
||||
rdr.d, err = decompress.GetDecompressor(rdr.Superblock.CompType)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
switch rdr.Superblock.CompType {
|
||||
case ZlibCompression:
|
||||
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, "")
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user