tar,unzip: postpone creation of symlinks with "suspicious" targets
authorDenys Vlasenko <vda.linux@googlemail.com>
Tue, 20 Feb 2018 14:57:45 +0000 (15:57 +0100)
committerDenys Vlasenko <vda.linux@googlemail.com>
Sat, 10 Mar 2018 18:41:54 +0000 (19:41 +0100)
commit37277a23fe48b13313f5d96084d890ed21d5fd8b
treee8a7964ad8fb1ba25aee2c54d434c2239b93faa2
parente3821088af5fb663be756c3330b52d1b48ad699e
tar,unzip: postpone creation of symlinks with "suspicious" targets

This mostly reverts commit bc9bbeb2b81001e8731cd2ae501c8fccc8d87cc7
"libarchive: do not extract unsafe symlinks unless $EXTRACT_UNSAFE_SYMLINKS=1"

Users report that it is somewhat too restrictive. See
https://bugs.busybox.net/show_bug.cgi?id=8411

In particular, this interferes with unpacking of busybox-based
filesystems with links like "sbin/applet" -> "../bin/busybox".

The change is made smaller by deleting ARCHIVE_EXTRACT_QUIET flag -
it is unused since 2010, and removing conditionals on it
allows commonalizing some error message codes.

function                                             old     new   delta
create_or_remember_symlink                             -      94     +94
create_symlinks_from_list                              -      64     +64
tar_main                                            1002    1006      +4
unzip_main                                          2732    2724      -8
data_extract_all                                     984     891     -93
unsafe_symlink_target                                147       -    -147
------------------------------------------------------------------------------
(add/remove: 2/1 grow/shrink: 1/2 up/down: 162/-248)          Total: -86 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
archival/libarchive/data_extract_all.c
archival/libarchive/unsafe_symlink_target.c
archival/tar.c
archival/unzip.c
include/bb_archive.h
testsuite/tar.tests