diff --git a/tests/integration/filesystem/squashfs/squashfs_v4_le/__input__/bad_symlink.squashfs b/tests/integration/filesystem/squashfs/squashfs_v4_le/__input__/bad_symlink.squashfs new file mode 100644 index 0000000000..f95a690d37 --- /dev/null +++ b/tests/integration/filesystem/squashfs/squashfs_v4_le/__input__/bad_symlink.squashfs @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0c55f810260e48d4db63d02b92a0a07e0e8b04c46070a2f3ef1f2314eaab0d37 +size 4096 diff --git a/tests/integration/filesystem/squashfs/squashfs_v4_le/__output__/bad_symlink.squashfs_extract/badlink b/tests/integration/filesystem/squashfs/squashfs_v4_le/__output__/bad_symlink.squashfs_extract/badlink new file mode 120000 index 0000000000..68fc382c36 --- /dev/null +++ b/tests/integration/filesystem/squashfs/squashfs_v4_le/__output__/bad_symlink.squashfs_extract/badlink @@ -0,0 +1 @@ +etc/ssl/private/ssl-cert-snakeoil.key \ No newline at end of file diff --git a/unblob/extractor.py b/unblob/extractor.py index 8b4aac0d29..e25607c593 100644 --- a/unblob/extractor.py +++ b/unblob/extractor.py @@ -23,10 +23,10 @@ def carve_chunk_to_file(carve_path: Path, file: File, chunk: Chunk): def fix_permission(path: Path): - if not path.exists(): + if path.is_symlink(): return - if path.is_symlink(): + if not path.exists(): return mode = path.stat().st_mode