tar xf: failure/success

Cristian Ionescu-Idbohrn cristian.ionescu-idbohrn at axis.com
Wed Nov 13 19:39:19 UTC 2013


Sometime between 1_19_4 and 1_20_2 tar extract changed behaviour.
Invalid archive file (since 1_20_2) is successfuly ($?=0) expanded,
although:

	tar: invalid magic
	tar: short read

show up on stderr.

Test script:

---8<---
#!/bin/sh

set -eu

whine() {
	echo "$*" >&2
}

tb=../foo
> $tb || {
	whine "E: failed (\$?=$?) to truncate '$tb'"
	exit 1
}

./busybox xvf $tb || whine "E: failed (\$?=$?) to extract tarball '$tb'"
./busybox xvzf $tb ||
	whine "E: failed (\$?=$?) to decompress and extract tarbal '$tb'"
--->8---

$ ../tar_test.sh on 1_19_4:
	tar: short read
	tar: short read
	E: failed ($?=1) to decompress and extract tarbal '../foo'

$ ../tar_test.sh on 1_20_2:
	tar: short read
	tar: invalid magic
	tar: short read


Wouldn't it be reasonable if tar exited with status failure on both
"invalid magic" and "short read"?


.config:

---8<---
CONFIG_HAVE_DOT_CONFIG=y
CONFIG_PLATFORM_LINUX=y
CONFIG_FEATURE_BUFFERS_USE_MALLOC=y
CONFIG_SHOW_USAGE=y
CONFIG_FEATURE_VERBOSE_USAGE=y
CONFIG_FEATURE_COMPRESS_USAGE=y
CONFIG_SUBST_WCHAR=0
CONFIG_LAST_SUPPORTED_WCHAR=0
CONFIG_PID_FILE_PATH=""
CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe"
CONFIG_CROSS_COMPILER_PREFIX=""
CONFIG_SYSROOT=""
CONFIG_EXTRA_CFLAGS=""
CONFIG_EXTRA_LDFLAGS=""
CONFIG_EXTRA_LDLIBS=""
CONFIG_DEBUG=y
CONFIG_DEBUG_PESSIMIZE=y
CONFIG_NO_DEBUG_LIB=y
CONFIG_INSTALL_APPLET_SYMLINKS=y
CONFIG_PREFIX="./_install"
CONFIG_PASSWORD_MINLEN=6
CONFIG_MD5_SMALL=1
CONFIG_SHA3_SMALL=1
CONFIG_FEATURE_EDITING_MAX_LEN=0
CONFIG_FEATURE_EDITING_HISTORY=0
CONFIG_FEATURE_COPYBUF_KB=4
CONFIG_FEATURE_SEAMLESS_XZ=y
CONFIG_FEATURE_SEAMLESS_LZMA=y
CONFIG_FEATURE_SEAMLESS_BZ2=y
CONFIG_FEATURE_SEAMLESS_GZ=y
CONFIG_FEATURE_SEAMLESS_Z=y
CONFIG_GZIP_FAST=0
CONFIG_TAR=y
CONFIG_FEATURE_TAR_CREATE=y
CONFIG_FEATURE_TAR_AUTODETECT=y
CONFIG_FEATURE_TAR_FROM=y
CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY=y
CONFIG_FEATURE_TAR_OLDSUN_COMPATIBILITY=y
CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
CONFIG_FEATURE_TAR_UNAME_GNAME=y
CONFIG_FEATURE_TAR_NOPRESERVE_TIME=y
CONFIG_DEFAULT_SETFONT_DIR=""
CONFIG_FEATURE_VI_MAX_LEN=0
CONFIG_TELINIT_PATH=""
CONFIG_FEATURE_KILL_DELAY=0
CONFIG_INIT_TERMINAL_TYPE=""
CONFIG_FIRST_SYSTEM_ID=0
CONFIG_LAST_SYSTEM_ID=0
CONFIG_FEATURE_DEFAULT_PASSWD_ALGO=""
CONFIG_DEFAULT_MODULES_DIR=""
CONFIG_DEFAULT_DEPMOD_FILE=""
CONFIG_FEATURE_LESS_MAXLINES=0
CONFIG_FEATURE_BEEP_FREQ=0
CONFIG_FEATURE_BEEP_LENGTH_MS=0
CONFIG_FEATURE_CROND_DIR=""
CONFIG_IFUPDOWN_IFSTATE_PATH=""
CONFIG_DHCPD_LEASES_FILE=""
CONFIG_UDHCP_DEBUG=0
CONFIG_UDHCPC_DEFAULT_SCRIPT=""
CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=0
CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS=""
CONFIG_FEATURE_MIME_CHARSET=""
CONFIG_SV_DEFAULT_SERVICE_DIR=""
CONFIG_FEATURE_SH_IS_NONE=y
CONFIG_FEATURE_BASH_IS_NONE=y
CONFIG_FEATURE_SYSLOGD_READ_BUFFER_SIZE=0
CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=0
--->8---

Thoughts?


Cheers,

-- 
Cristian


More information about the busybox mailing list