diff --git a/src/borg/compress.pyx b/src/borg/compress.pyx index 493b4a53a..190048002 100644 --- a/src/borg/compress.pyx +++ b/src/borg/compress.pyx @@ -90,8 +90,8 @@ cdef class CompressorBase: def decompress(self, data): """ - Decompress *data* (bytes) and return bytes result. The leading Compressor ID - bytes need to be present. + Decompress *data* (preferably a memoryview, bytes also acceptable) and return bytes result. + The leading Compressor ID bytes need to be present. Only handles input generated by _this_ Compressor - for a general purpose decompression method see *Compressor.decompress*. @@ -489,8 +489,6 @@ class ObfuscateSize(CompressorBase): return super().compress(obfuscated_data) # add ID header def decompress(self, data): - if not isinstance(data, memoryview): - data = memoryview(data) obfuscated_data = super().decompress(data) # remove obfuscator ID header compr_size = self.header_fmt.unpack(obfuscated_data[0:self.header_len])[0] compressed_data = obfuscated_data[self.header_len:self.header_len+compr_size] diff --git a/src/borg/crypto/key.py b/src/borg/crypto/key.py index 0a93e856c..077ad550c 100644 --- a/src/borg/crypto/key.py +++ b/src/borg/crypto/key.py @@ -355,7 +355,7 @@ class AESKeyBase(KeyBase): raise IntegrityError(f"Chunk {bin_to_hex(id)}: Could not decrypt [{str(e)}]") if not decompress: return payload - data = self.decompress(payload) + data = self.decompress(memoryview(payload)) self.assert_id(id, data) return data @@ -745,7 +745,7 @@ class AEADKeyBase(KeyBase): raise IntegrityError(f"Chunk {bin_to_hex(id)}: Could not decrypt [{str(e)}]") if not decompress: return payload - data = self.decompress(payload) + data = self.decompress(memoryview(payload)) self.assert_id(id, data) return data