commit 3fb6b31c7 introduced a check for unsafe components in
tar archive hardlinks, but it was being applied to symlinks too
which broke "Symlinks and hardlinks coexist" tar test.

Signed-off-by: Radoslav Kolev <[email protected]>
---
 archival/libarchive/get_header_tar.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/archival/libarchive/get_header_tar.c 
b/archival/libarchive/get_header_tar.c
index 1c40ecedb..606d8067f 100644
--- a/archival/libarchive/get_header_tar.c
+++ b/archival/libarchive/get_header_tar.c
@@ -455,7 +455,7 @@ char FAST_FUNC get_header_tar(archive_handle_t 
*archive_handle)
 
        /* Everything up to and including last ".." component is stripped */
        strip_unsafe_prefix(file_header->name);
-       if (file_header->link_target) {
+       if (file_header->link_target && !S_ISLNK(file_header->mode)) {
                /* GNU tar 1.34 examples:
                 * tar: Removing leading '/' from hard link targets
                 * tar: Removing leading '../' from hard link targets
-- 
2.52.0

_______________________________________________
busybox mailing list
[email protected]
https://lists.busybox.net/mailman/listinfo/busybox

Reply via email to