From b66df80d939ec70a29b10d1d2690d61c33d623fd Mon Sep 17 00:00:00 2001 From: nyuware Date: Thu, 21 Mar 2024 09:46:04 +0100 Subject: [PATCH] fix(cpio): Fix dupplicated CPIO entries by overwriting them. --- .../archive/cpio/cpio_binary/__input__/dupplicate_entries.cpio | 3 +++ .../__output__/dupplicate_entries.cpio_extract/usr/bin/7zDec | 3 +++ .../__output__/dupplicate_entries.cpio_extract/usr/bin/[ | 1 + .../__output__/dupplicate_entries.cpio_extract/usr/bin/[[ | 1 + .../__output__/dupplicate_entries.cpio_extract/usr/bin/bunzip2 | 1 + .../__output__/dupplicate_entries.cpio_extract/usr/bin/bzcat | 1 + .../__output__/dupplicate_entries.cpio_extract/usr/bin/clear | 1 + .../__output__/dupplicate_entries.cpio_extract/usr/bin/cut | 1 + .../__output__/dupplicate_entries.cpio_extract/usr/bin/du | 1 + .../__output__/dupplicate_entries.cpio_extract/usr/bin/env | 1 + .../__output__/dupplicate_entries.cpio_extract/usr/bin/expr | 1 + .../__output__/dupplicate_entries.cpio_extract/usr/bin/find | 1 + .../__output__/dupplicate_entries.cpio_extract/usr/bin/free | 1 + .../dupplicate_entries.cpio_extract/usr/bin/gdbserver | 1 + .../__output__/dupplicate_entries.cpio_extract/usr/bin/head | 1 + .../__output__/dupplicate_entries.cpio_extract/usr/bin/id | 1 + .../__output__/dupplicate_entries.cpio_extract/usr/bin/killall | 1 + .../__output__/dupplicate_entries.cpio_extract/usr/bin/lrz | 3 +++ .../__output__/dupplicate_entries.cpio_extract/usr/bin/lsz | 3 +++ .../__output__/dupplicate_entries.cpio_extract/usr/bin/md5sum | 1 + .../__output__/dupplicate_entries.cpio_extract/usr/bin/mkfifo | 1 + .../__output__/dupplicate_entries.cpio_extract/usr/bin/passwd | 1 + .../__output__/dupplicate_entries.cpio_extract/usr/bin/rb | 1 + .../__output__/dupplicate_entries.cpio_extract/usr/bin/reset | 1 + .../__output__/dupplicate_entries.cpio_extract/usr/bin/rx | 1 + .../__output__/dupplicate_entries.cpio_extract/usr/bin/rz | 1 + .../__output__/dupplicate_entries.cpio_extract/usr/bin/sb | 1 + .../__output__/dupplicate_entries.cpio_extract/usr/bin/sort | 1 + .../__output__/dupplicate_entries.cpio_extract/usr/bin/sx | 1 + .../__output__/dupplicate_entries.cpio_extract/usr/bin/sz | 1 + .../__output__/dupplicate_entries.cpio_extract/usr/bin/tail | 1 + .../__output__/dupplicate_entries.cpio_extract/usr/bin/test | 1 + .../__output__/dupplicate_entries.cpio_extract/usr/bin/tftp | 1 + .../__output__/dupplicate_entries.cpio_extract/usr/bin/top | 1 + .../dupplicate_entries.cpio_extract/usr/bin/traceroute | 1 + .../__output__/dupplicate_entries.cpio_extract/usr/bin/uptime | 1 + .../__output__/dupplicate_entries.cpio_extract/usr/bin/wc | 1 + .../__output__/dupplicate_entries.cpio_extract/usr/bin/which | 1 + .../__output__/dupplicate_entries.cpio_extract/usr/bin/xargs | 1 + .../__output__/dupplicate_entries.cpio_extract/usr/bin/yes | 1 + .../__output__/dupplicate_entries.cpio_extract/usr/sbin/chroot | 1 + unblob/file_utils.py | 2 +- unblob/handlers/archive/cpio.py | 2 ++ 43 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 tests/integration/archive/cpio/cpio_binary/__input__/dupplicate_entries.cpio create mode 100644 tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/7zDec create mode 120000 tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/[ create mode 120000 tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/[[ create mode 120000 tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/bunzip2 create mode 120000 tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/bzcat create mode 120000 tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/clear create mode 120000 tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/cut create mode 120000 tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/du create mode 120000 tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/env create mode 120000 tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/expr create mode 120000 tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/find create mode 120000 tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/free create mode 120000 tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/gdbserver create mode 120000 tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/head create mode 120000 tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/id create mode 120000 tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/killall create mode 100644 tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/lrz create mode 100644 tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/lsz create mode 120000 tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/md5sum create mode 120000 tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/mkfifo create mode 120000 tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/passwd create mode 120000 tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/rb create mode 120000 tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/reset create mode 120000 tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/rx create mode 120000 tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/rz create mode 120000 tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/sb create mode 120000 tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/sort create mode 120000 tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/sx create mode 120000 tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/sz create mode 120000 tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/tail create mode 120000 tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/test create mode 120000 tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/tftp create mode 120000 tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/top create mode 120000 tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/traceroute create mode 120000 tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/uptime create mode 120000 tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/wc create mode 120000 tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/which create mode 120000 tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/xargs create mode 120000 tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/bin/yes create mode 120000 tests/integration/archive/cpio/cpio_binary/__output__/dupplicate_entries.cpio_extract/usr/sbin/chroot 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)