From d2a1bdd7dd08a0821f75eafa4dc56f06246d2165 Mon Sep 17 00:00:00 2001 From: nyuware Date: Thu, 11 Apr 2024 11:18:18 +0200 Subject: [PATCH] fix(zlib): Limit zlib pattern at the start of the file --- .../compression/zlib/__input__/sample.prefix.zlib | 3 --- .../__output__/sample.prefix.zlib_extract/0-5.unknown | 3 --- .../__output__/sample.prefix.zlib_extract/5-39.zlib | 3 --- .../5-39.zlib_extract/zlib.uncompressed | 3 --- unblob/handlers/compression/zlib.py | 10 +++++----- 5 files changed, 5 insertions(+), 17 deletions(-) delete mode 100644 tests/integration/compression/zlib/__input__/sample.prefix.zlib delete mode 100644 tests/integration/compression/zlib/__output__/sample.prefix.zlib_extract/0-5.unknown delete mode 100644 tests/integration/compression/zlib/__output__/sample.prefix.zlib_extract/5-39.zlib delete mode 100644 tests/integration/compression/zlib/__output__/sample.prefix.zlib_extract/5-39.zlib_extract/zlib.uncompressed diff --git a/tests/integration/compression/zlib/__input__/sample.prefix.zlib b/tests/integration/compression/zlib/__input__/sample.prefix.zlib deleted file mode 100644 index 1e5f164730..0000000000 --- a/tests/integration/compression/zlib/__input__/sample.prefix.zlib +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9df2812c73d506e5bc4fae81223710d300c89993be73c43cf175112475628ef0 -size 39 diff --git a/tests/integration/compression/zlib/__output__/sample.prefix.zlib_extract/0-5.unknown b/tests/integration/compression/zlib/__output__/sample.prefix.zlib_extract/0-5.unknown deleted file mode 100644 index 68ca2264a0..0000000000 --- a/tests/integration/compression/zlib/__output__/sample.prefix.zlib_extract/0-5.unknown +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4677942dfa3e74b5dea7484661a2485bb73ba422eb72d311fdb39372c019c615 -size 5 diff --git a/tests/integration/compression/zlib/__output__/sample.prefix.zlib_extract/5-39.zlib b/tests/integration/compression/zlib/__output__/sample.prefix.zlib_extract/5-39.zlib deleted file mode 100644 index bc290bfd45..0000000000 --- a/tests/integration/compression/zlib/__output__/sample.prefix.zlib_extract/5-39.zlib +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:133a339cfd1651953db209cf44666f8a49e4364c4f1e5bf8be84e812f0f91c61 -size 34 diff --git a/tests/integration/compression/zlib/__output__/sample.prefix.zlib_extract/5-39.zlib_extract/zlib.uncompressed b/tests/integration/compression/zlib/__output__/sample.prefix.zlib_extract/5-39.zlib_extract/zlib.uncompressed deleted file mode 100644 index 25b1f11f85..0000000000 --- a/tests/integration/compression/zlib/__output__/sample.prefix.zlib_extract/5-39.zlib_extract/zlib.uncompressed +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9d121ef4c4adf575b3c8f4c9f8d9e1a1887f1fe09bb718a33141a0bc6009d52d -size 28 diff --git a/unblob/handlers/compression/zlib.py b/unblob/handlers/compression/zlib.py index ab16cb7193..533e1603d8 100644 --- a/unblob/handlers/compression/zlib.py +++ b/unblob/handlers/compression/zlib.py @@ -8,7 +8,7 @@ from unblob.handlers.archive.dmg import DMGHandler from ...file_utils import DEFAULT_BUFSIZE, InvalidInputFormat -from ...models import Extractor, File, Handler, HexString, ValidChunk +from ...models import Extractor, File, Handler, Regex, ValidChunk logger = get_logger() @@ -28,10 +28,10 @@ class ZlibHandler(Handler): NAME = "zlib" PATTERNS = [ - HexString("78 01"), # low compression - HexString("78 9c"), # default compression - HexString("78 da"), # best compression - HexString("78 5e"), # compressed + Regex(r"^\x78\x01"), # low compression + Regex(r"^\x78\x9c"), # default compression + Regex(r"^\x78\xda"), # best compression + Regex(r"^\x78\x5e"), # compressed ] EXTRACTOR = ZlibExtractor()