diff --git a/tests/integration/archive/cpio/cpio_binary/__input__/dupplicate_entries.cpio b/tests/integration/archive/cpio/cpio_binary/__input__/dupplicate_entries.cpio new file mode 100644 index 0000000000..4e5c2b7eea --- /dev/null +++ b/tests/integration/archive/cpio/cpio_binary/__input__/dupplicate_entries.cpio @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:358956e97bf05618dfdb31102031580a4ef12dfb078913133de0983a283022ef +size 185338 diff --git a/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/7zDec b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/7zDec new file mode 100644 index 0000000000..bad9f1d4a0 --- /dev/null +++ b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/7zDec @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f1a16c967d0aa31d3524f6ada74c47f3d952349bf533588092cf43e43f0ecc0f +size 37748 diff --git a/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/[ b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/[ new file mode 120000 index 0000000000..f948f1a72d --- /dev/null +++ b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/[ @@ -0,0 +1 @@ +../../bin/busybox \ No newline at end of file diff --git a/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/[[ b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/[[ new file mode 120000 index 0000000000..f948f1a72d --- /dev/null +++ b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/[[ @@ -0,0 +1 @@ +../../bin/busybox \ No newline at end of file diff --git a/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/bunzip2 b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/bunzip2 new file mode 120000 index 0000000000..f948f1a72d --- /dev/null +++ b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/bunzip2 @@ -0,0 +1 @@ +../../bin/busybox \ No newline at end of file diff --git a/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/bzcat b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/bzcat new file mode 120000 index 0000000000..f948f1a72d --- /dev/null +++ b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/bzcat @@ -0,0 +1 @@ +../../bin/busybox \ No newline at end of file diff --git a/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/clear b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/clear new file mode 120000 index 0000000000..f948f1a72d --- /dev/null +++ b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/clear @@ -0,0 +1 @@ +../../bin/busybox \ No newline at end of file diff --git a/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/cut b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/cut new file mode 120000 index 0000000000..f948f1a72d --- /dev/null +++ b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/cut @@ -0,0 +1 @@ +../../bin/busybox \ No newline at end of file diff --git a/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/du b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/du new file mode 120000 index 0000000000..f948f1a72d --- /dev/null +++ b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/du @@ -0,0 +1 @@ +../../bin/busybox \ No newline at end of file diff --git a/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/env b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/env new file mode 120000 index 0000000000..f948f1a72d --- /dev/null +++ b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/env @@ -0,0 +1 @@ +../../bin/busybox \ No newline at end of file diff --git a/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/expr b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/expr new file mode 120000 index 0000000000..f948f1a72d --- /dev/null +++ b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/expr @@ -0,0 +1 @@ +../../bin/busybox \ No newline at end of file diff --git a/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/find b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/find new file mode 120000 index 0000000000..f948f1a72d --- /dev/null +++ b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/find @@ -0,0 +1 @@ +../../bin/busybox \ No newline at end of file diff --git a/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/free b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/free new file mode 120000 index 0000000000..f948f1a72d --- /dev/null +++ b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/free @@ -0,0 +1 @@ +../../bin/busybox \ No newline at end of file diff --git a/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/gdbserver b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/gdbserver new file mode 120000 index 0000000000..6751ed901a --- /dev/null +++ b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/gdbserver @@ -0,0 +1 @@ +../../mnt/application/gdbserver \ No newline at end of file diff --git a/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/head b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/head new file mode 120000 index 0000000000..f948f1a72d --- /dev/null +++ b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/head @@ -0,0 +1 @@ +../../bin/busybox \ No newline at end of file diff --git a/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/id b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/id new file mode 120000 index 0000000000..f948f1a72d --- /dev/null +++ b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/id @@ -0,0 +1 @@ +../../bin/busybox \ No newline at end of file diff --git a/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/killall b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/killall new file mode 120000 index 0000000000..f948f1a72d --- /dev/null +++ b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/killall @@ -0,0 +1 @@ +../../bin/busybox \ No newline at end of file diff --git a/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/lrz b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/lrz new file mode 100644 index 0000000000..617fdae4ca --- /dev/null +++ b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/lrz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:23d417a1fbfe5a1920250002d32de700f5d5ec1b1a014f46c1d8a94aa3225491 +size 68684 diff --git a/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/lsz b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/lsz new file mode 100644 index 0000000000..cde490cc16 --- /dev/null +++ b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/lsz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bf5e5ee2e16963a8ba27e648aaa6e057eb6504363d3e9d6f884b48a3370dfc21 +size 73032 diff --git a/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/md5sum b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/md5sum new file mode 120000 index 0000000000..f948f1a72d --- /dev/null +++ b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/md5sum @@ -0,0 +1 @@ +../../bin/busybox \ No newline at end of file diff --git a/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/mkfifo b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/mkfifo new file mode 120000 index 0000000000..f948f1a72d --- /dev/null +++ b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/mkfifo @@ -0,0 +1 @@ +../../bin/busybox \ No newline at end of file diff --git a/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/passwd b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/passwd new file mode 120000 index 0000000000..f948f1a72d --- /dev/null +++ b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/passwd @@ -0,0 +1 @@ +../../bin/busybox \ No newline at end of file diff --git a/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/rb b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/rb new file mode 120000 index 0000000000..fd10c8ebb3 --- /dev/null +++ b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/rb @@ -0,0 +1 @@ +lrz \ No newline at end of file diff --git a/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/reset b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/reset new file mode 120000 index 0000000000..f948f1a72d --- /dev/null +++ b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/reset @@ -0,0 +1 @@ +../../bin/busybox \ No newline at end of file diff --git a/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/rx b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/rx new file mode 120000 index 0000000000..fd10c8ebb3 --- /dev/null +++ b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/rx @@ -0,0 +1 @@ +lrz \ No newline at end of file diff --git a/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/rz b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/rz new file mode 120000 index 0000000000..fd10c8ebb3 --- /dev/null +++ b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/rz @@ -0,0 +1 @@ +lrz \ No newline at end of file diff --git a/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/sb b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/sb new file mode 120000 index 0000000000..516c5a5801 --- /dev/null +++ b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/sb @@ -0,0 +1 @@ +lsz \ No newline at end of file diff --git a/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/sort b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/sort new file mode 120000 index 0000000000..f948f1a72d --- /dev/null +++ b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/sort @@ -0,0 +1 @@ +../../bin/busybox \ No newline at end of file diff --git a/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/sx b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/sx new file mode 120000 index 0000000000..516c5a5801 --- /dev/null +++ b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/sx @@ -0,0 +1 @@ +lsz \ No newline at end of file diff --git a/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/sz b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/sz new file mode 120000 index 0000000000..516c5a5801 --- /dev/null +++ b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/sz @@ -0,0 +1 @@ +lsz \ No newline at end of file diff --git a/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/tail b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/tail new file mode 120000 index 0000000000..f948f1a72d --- /dev/null +++ b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/tail @@ -0,0 +1 @@ +../../bin/busybox \ No newline at end of file diff --git a/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/test b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/test new file mode 120000 index 0000000000..f948f1a72d --- /dev/null +++ b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/test @@ -0,0 +1 @@ +../../bin/busybox \ No newline at end of file diff --git a/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/tftp b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/tftp new file mode 120000 index 0000000000..f948f1a72d --- /dev/null +++ b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/tftp @@ -0,0 +1 @@ +../../bin/busybox \ No newline at end of file diff --git a/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/top b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/top new file mode 120000 index 0000000000..f948f1a72d --- /dev/null +++ b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/top @@ -0,0 +1 @@ +../../bin/busybox \ No newline at end of file diff --git a/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/traceroute b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/traceroute new file mode 120000 index 0000000000..f948f1a72d --- /dev/null +++ b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/traceroute @@ -0,0 +1 @@ +../../bin/busybox \ No newline at end of file diff --git a/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/uptime b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/uptime new file mode 120000 index 0000000000..f948f1a72d --- /dev/null +++ b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/uptime @@ -0,0 +1 @@ +../../bin/busybox \ No newline at end of file diff --git a/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/wc b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/wc new file mode 120000 index 0000000000..f948f1a72d --- /dev/null +++ b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/wc @@ -0,0 +1 @@ +../../bin/busybox \ No newline at end of file diff --git a/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/which b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/which new file mode 120000 index 0000000000..f948f1a72d --- /dev/null +++ b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/which @@ -0,0 +1 @@ +../../bin/busybox \ No newline at end of file diff --git a/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/xargs b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/xargs new file mode 120000 index 0000000000..f948f1a72d --- /dev/null +++ b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/xargs @@ -0,0 +1 @@ +../../bin/busybox \ No newline at end of file diff --git a/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/yes b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/yes new file mode 120000 index 0000000000..f948f1a72d --- /dev/null +++ b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/yes @@ -0,0 +1 @@ +../../bin/busybox \ No newline at end of file diff --git a/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/sbin/chroot b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/sbin/chroot new file mode 120000 index 0000000000..f948f1a72d --- /dev/null +++ b/tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/sbin/chroot @@ -0,0 +1 @@ +../../bin/busybox \ No newline at end of file diff --git a/unblob/file_utils.py b/unblob/file_utils.py index d53651d4a2..e532be6ab5 100644 --- a/unblob/file_utils.py +++ b/unblob/file_utils.py @@ -628,7 +628,7 @@ def open( # noqa: A003 def unlink(self, path): """Delete file within extraction path.""" - logger.debug("unlink file", file_path=path) + logger.debug("unlink file", file_path=path, _verbosity=3) safe_path = self._get_extraction_path(path, "unlink") safe_path.unlink(missing_ok=True) diff --git a/unblob/handlers/archive/cpio.py b/unblob/handlers/archive/cpio.py index 43dc2836a4..d1c40f5eb6 100644 --- a/unblob/handlers/archive/cpio.py +++ b/unblob/handlers/archive/cpio.py @@ -211,6 +211,7 @@ def dump_entries(self, fs: FileSystem): continue if stat.S_ISREG(entry.mode): + fs.unlink(entry.path) fs.carve(entry.path, self.file, entry.start_offset, entry.size) elif stat.S_ISDIR(entry.mode): fs.mkdir( @@ -222,6 +223,7 @@ def dump_entries(self, fs: FileSystem): self.file[entry.start_offset : entry.start_offset + entry.size] ).decode("utf-8") ) + fs.unlink(entry.path) fs.create_symlink(src=link_path, dst=entry.path) elif ( stat.S_ISCHR(entry.mode)