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>
Tue, 20 Feb 2018 15:06:53 +0000 (16:06 +0100)
commita84db18fc71d09e801df0ebca048d82e90b32c6a
tree1eda8cd659f78406f1b9f86d5e0b5757af20bad9
parent95121d98e6da12599246d8e25c3f300e422a06fb
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