Commit 319ff3cb authored by Janos Lenart's avatar Janos Lenart
Browse files

Import upstream version 1.32

parent d05ae5df
2019-02-23 Sergey Poznyakoff <>
Version 1.32
2019-02-04 Sergey Poznyakoff <>
Minor fixes in docs.
* doc/tar.1: Remove description of the --preserve option
Document verbosity levels.
* doc/tar.texi: Fix description of the -o option.
2019-01-15 Daniel Le <>
Fix typos in the documentation
Short option "t" was mistranslated to "--test" instead of "--list"
in commit
2019-01-15 Sergey Poznyakoff <>
Fix build on AIX
* src/unlink.c (flush_deferred_unlinks): Avoid possible duplicate
2019-01-15 Sergey Poznyakoff <>
Version 1.31.90
2019-01-14 Sergey Poznyakoff <>
Ensure gnu format when running checkpoint tests
2019-01-14 Sergey Poznyakoff <>
Fix compression tests
Existing compression tests used tar with compiled-in
defaults. However,
some of the defaults are sure to create archives that are not
reproducible (e.g. DEFAULT_ARCHIVE_FORMAT=POSIX, because the
name field
in posix extended headers uses PID of the creating process
by default).
Moreover, some compressors (e.g. gzip) store current timestamp in
the file header when compressing from stdin, so that using cmp
on the
two created archives as the tests did is error-prone. Another
is that the tests implicitly assumed that tar uses archive
suffix to
recognize its format when extracting, which isn't the
case. Finally,
there's hardly any reason in using sed to create m4 sources, when
everything can be achieved by m4 itself.
* tests/ Remove generation of compress-*.at files.
* tests/ Remove.
* tests/compress.m4: New file.
* tests/ Include compress.m4, use TAR_CHECK_COMPRESS
check compression options.
2019-01-14 Sergey Poznyakoff <>
Fix possible NULL dereference (savannah bug #55369)
* src/sparse.c (pax_decode_header): Check return from
2019-01-14 Sergey Poznyakoff <>
Fix compilation without iconv.
2019-01-14 Sergey Poznyakoff <>
Fix iconv usage.
Patch by Christian Weisgerber.
* src/utf8.c (utf8_convert): non-zero return from iconv means
2019-01-14 Pavel Raiskup <>
tests: fix for BSD
While creating file, BSD kernels inherit the group ownership from
parent directory.
* tests/ Attempt to 'chown' the newly created directory
to proper group (at least on affected machines that command is
expected to succeed).
2019-01-14 Sergey Poznyakoff <>
Fix typo in manpage.
2019-01-14 Sergey Poznyakoff <>
Fix expected output in dirrem tests.
In both tests, the "file changed as we read it" warning might be
produced for dir/sub, depending on the ctime resolution and
The problem was fixed by 64b43fdf70d82c39eb2ca900cd4f8e49,
but regressed
after e7cd377f7801d42aa8e07addff93d2150666c237, which removed
1 second
delays between each pair of checkpoints. Since the presense
or absense
of this warning is irrelevant for the test, it is now suppressed.
* tests/ Suppress the file-changed warning.
* tests/ Likewise.
2019-01-12 Sergey Poznyakoff <>
Fix the use of --checkpoint without explicit --checkpoint-action
* src/checkpoint.c (checkpoint_finish_compile): Set default
if necessary.
* tests/checkpoint/ New testcase.
* tests/checkpoint/ New testcase.
* tests/checkpoint/ New testcase.
* tests/checkpoint/ New testcase.
* tests/checkpoint/ New testcase.
* tests/ Add new testcases.
* tests/ Include new testcases.
2019-01-10 Sergey Poznyakoff <>
Remove erroneous abort() call
The call was introduced by commit ccef8581. It caused tar to abort
on perfectly normal operations, like untarring archives containing
./ with the -U option,
for details.
* src/extract.c (maybe_recoverable): Remove misplaced call
to abort().
2019-01-02 Sergey Poznyakoff <>
Version 1.31
2018-12-28 Sergey Poznyakoff <>
Fix the difflink test
Hardlinking a symlink produces hardlink on BSD and symlink
on GNU/Linux. Avoid the ambiguity.
* tests/ Create hard link from a regular file.
2018-12-28 Sergey Poznyakoff <>
Work over a bug in gnulib error()
The error() function from glibc correctly prefixes each message it
prints with program_name as set by set_program_name. However, its
replacement from gnulib, which is linked in on systems where this
function is not available, prints the name returned by
instead. Due to this messages output by tar subprocess (which
sets its
program name to 'tar (child)') become indiscernible from those
by the main process. In particular, this breaks the
and test cases.
gnulib error().
* src/tar.c [ENABLE_ERROR_PRINT_PROGNAME] (tar_print_progname):
New function.
(main) [ENABLE_ERROR_PRINT_PROGNAME]: Set error_print_progname.
2018-12-28 Sergey Poznyakoff <>
Implement the "wait" checkpoint action.
This action instructs tar to pause until given signal is
The newer genfile tool uses this action for communication between
genfile and tar in exec mode. This eliminates race conitions and
speeds up the tests based on exec mode.
* doc/tar.texi: Document changes.
* paxutils: Upgrade.
* src/checkpoint.c: Implement the wait action.
* src/common.h (decode_signal): New proto.
* src/tar.c (decode_signal): New function.
(set_stat_signal): Rewrite.
* tests/ Adjust genfile and tar command line arguments
to use the new feature.
* tests/ Likewise.
* tests/ Likewise.
* tests/ Likewise.
* tests/ Likewise.
* tests/ Likewise.
* tests/ Likewise.
* tests/ Likewise.
* tests/ Likewise.
2018-12-27 Sergey Poznyakoff <>
Fix CVE-2018-20482
* NEWS: Update.
* src/sparse.c (sparse_dump_region): Handle short read condition.
(sparse_extract_region,check_data_region): Fix dumped_size
Handle short read condition.
(pax_decode_header): Fix dumped_size calculation.
* tests/ Add new testcases.
* tests/ Likewise.
* tests/ New file.
* tests/ New file.
* tests/ New file.
2018-12-21 Sergey Poznyakoff <>
Disallow modifications to the global pax extended header in
update mode.
Updating global headers in update mode is not possible, because:
1) If the original archive was not in PAX format, writing the
global header would overwrite first member header (and eventually
data blocks) in the archive.
2) Otherwise, using the --pax-option can make the updated header
occupy more blocks than the original one, which would lead to the
same effect as in 1.
This also fixes
* src/xheader.c (xheader_forbid_global): New function.
* src/common.h (xheader_forbid_global): New prototype.
* src/update.c (update_archive): Use xheader_forbid_global,
of trying to write global extended header record.
2018-12-21 Sergey Poznyakoff <>
Bug reported in
* src/names.c (collect_and_sort_names): Fix iteration over
2018-12-21 Sergey Poznyakoff <>
Fix semantics of -K used together with explicit member names.
This also fixes the bug reported in
* src/common.h (starting_file_option): Describe the variable.
* src/names.c (add_starting_file): New function.
(name_match): Ignore everything before the member indicated by the
--starting-file option
* src/tar.c: Use add_starting_file to handle the -K option.
2018-12-21 Sergey Poznyakoff <>
Fix error handling when reading incremental snapshots
Bug reported in
* incremen.c (read_incr_db_01): Don't try to continue after
2018-12-21 Sergey Poznyakoff <>
Reject pax options starting with equals sign
Bug reported in
* xheader.c (xheader_set_keyword_equal): Bail out if the keyword
with =
2018-12-21 Sergey Poznyakoff <>
Fix buffer overflow
Bug reported in
* src/xheader.c (xheader_format_name): fix length calculation
2018-12-21 Sergey Poznyakoff <>
Fix improper memory access
Bug reported in
* src/transform.c (parse_transform_expr): Check if re is not empty
before accessing its last byte.
2018-11-24 Sergey Poznyakoff <>
Fix parsing of ACLs
Text returned by acl_to_text can contain comments (introduced
by #).
Strip comments and horizontal tabs prior to storing ACLs in PAX
* src/xattrs.c (xattrs_acls_cleanup): New function.
(xattrs__acls_get_a,xattrs__acls_get_d): Use xattrs_acls_cleanup.
2018-11-24 Sergey Poznyakoff <>
Don't try to read past the end of header string fields
* src/common.h (assign_string_n): New proto.
(ASSIGN_STRING_N): New macro.
* src/misc.c (assign_string_n): New function.
* gnulib.modules: Add strnlen.
* src/buffer.c: Use assign_string_n where appropriate.
* src/list.c: Likewise.
2018-11-12 Sergey Poznyakoff <>
Fix verbose ACL listing
* src/xattrs.c (acls_one_line): Advance pos.
(xattrs_print): Insert a comma between ACL and default ACL if both
are non-empty.
2018-10-29 Paul Eggert <>
tar: fix numbered backup bug
* src/misc.c (maybe_backup_file): Pass chdir_fd, not AT_FDCWD,
to find_backup_file_name. This fixes a bug whereby the wrong
backup file name was chosen for numbered backups.
2018-10-29 Paul Eggert <>
* src/tar.c (expand_pax_option): Pacify recent GCC.
2018-10-29 Paul Eggert <>
build: update gnulib submodule to latest
* src/misc.c (maybe_backup_file): Adjust to Gnulib change.
2018-08-02 Sergey Poznyakoff <>
Minor fixes in wordsplit.c
2018-08-02 Paul Eggert <>
build: update gnulib submodule to latest
2018-07-31 Sergey Poznyakoff <>
Silence gcc warnings in wordsplit
2018-07-31 Sergey Poznyakoff <>
Fix double-free introduced by 577dc345
* src/utf8.c (utf8_convert): Don't store freed value in *output
2018-07-31 Pavel Raiskup <>
Report race on systems without O_DIRECTORY
* src/names.c (collect_and_sort_names): Report ENOTDIR after
successful fstat() but !S_ISDIR.
2018-07-31 Pavel Raiskup <>
Avoid some resource leaks
* src/incremen.c (store_rename): Free temp_name, leaked before for
each renamed directory with --listed-incremental.
* src/transform.c (add_literal_segment): Tighten arguments by
(parse_transform_expr): Free 'str', leaked storage for each
--transform option before.
* src/utf8.c (utf8_convert): Deallocate buffer for failed iconv()
call so callers don't have to.
2018-07-31 Sergey Poznyakoff <>
Sync wordsplit and paxutils with the most recent versions
2018-06-14 Paul Eggert <>
* doc/tar.1: Fix font typo noted by esr.
2018-05-16 Paul Eggert <>
* doc/tar.1: Don't refer to nonexistent tar(5).
2018-04-13 Jim Meyering <>
--one-top-level: avoid a heap-buffer-overflow
* NEWS: Mention this.
* src/suffix.c (strip_compression_suffix): Fix string comparison
Without this change, some ASAN-enabled test runs would fail
with the
following. Also, strip an additional .tar suffix only if
the just-
stripped suffix did not match /^\.t/".
==30815==ERROR: AddressSanitizer: heap-buffer-overflow on
address 0x6020000002ed at pc 0x00000049d1f4 bp 0x7ffeb5906d50
sp 0x7ffeb5906500
READ of size 1 at 0x6020000002ed thread T0
SCARINESS: 12 (1-byte-read-heap-buffer-overflow)
#0 0x49d1f3 in __interceptor_strncmp
#1 0x5670f3 in strip_compression_suffix
#2 0x575788 in decode_options /j/tar/src/tar.c:2545
#3 0x5760c0 in main /j/tar/src/tar.c:2708
#4 0x7f105090df29 in __libc_start_main ../csu/libc-start.c:308
#5 0x408629 in _start (/j/tar/src/tar+0x408629)
0x6020000002ed is located 3 bytes to the left of 6-byte region
allocated by thread T0 here:
#0 0x4d0710 in __interceptor_malloc
#1 0x4908ad in __interceptor_strndup
#2 0x5cbcbd in xstrndup /j/tar/gnu/xstrndup.c:32
#3 0x5a325b in base_name /j/tar/gnu/basename.c:57
#4 0x575772 in decode_options /j/tar/src/tar.c:2544
#5 0x5760c0 in main /j/tar/src/tar.c:2708
#6 0x7f105090df29 in __libc_start_main ../csu/libc-start.c:308
2018-04-07 Andrew Hounsell <>
Tiny fix
* doc/snapshot.texi: Fix a typo
* scripts/tar-snapshot-edit: Fix a typo
2018-04-07 Jim Meyering <>
tests: avoid test failure with non-ancient autoconf
Running "make check" would fail with this: error: m4_divert_push: cannot change diversion
to `GROW' inside m4_expand
* tests/ Use printf in place of AS_ECHO_N.
These days, printf should work for everyone.
2018-04-07 Jim Meyering <>
maint: avoid -Wstringop-truncation warnings from upcoming GCC8
* src/create.c (start_private_header, start_header): Convert
trivial uses of strncpy to memcpy, to avoid warnings like this:
In function 'strncpy',
inlined from 'start_private_header' at create.c:522:3:
/usr/include/bits/string_fortified.h:106:10: warning: \
'__builtin_strncpy' output truncated before terminating nul \
copying 2 bytes from a string of the same length \
2018-04-07 Jim Meyering <>
maint: avoid -Wstringop-truncation warnings upcoming GCC8
* src/buffer.c (gnu_add_multi_volume_header): Convert a use of
strncpy to memcpy, to avoid this warning:
In function 'strncpy',
inlined from 'gnu_add_multi_volume_header' at buffer.c:1782:3,
/usr/include/bits/string_fortified.h:106:10: error:
specified bound 100 equals destination size \
2018-04-07 Jim Meyering <>
maint: avoid warnings from upcoming GCC8
* src/transform.c (_single_transform_name_to_obstack): Mark with
FALLTHROUGH statement rather than /* FALL THROUGH */ comment.
Only the former works with gcc-8.
* src/extract.c (maybe_recoverable): Call abort to tell gcc-8 that
this code is unreachable.
2018-04-07 Sergey Poznyakoff <>
Rewrite struct tm formatting
* src/list.c (tartime): Use strftime instead of manually
fields of the struct tm. This should also suppress some gcc
2018-04-07 Jim Meyering <>
tests: add coverage for new --zstd and all other compression tools
* tests/ New file: template from which each
per-compression-tool test is derived.
* tests/ (TESTSUITE_AT): Add it.
(compress-*.at): New rules to generate a file/tests for each
compression tool.
* tests/ (Compression): Add each of these generated
files in a new section.
* tests/.gitignore: Ignore the new generated files.
2018-03-18 Aaron Schrab <>
Fix typo
2018-03-18 Sergey Poznyakoff <>
Version 1.30.90
* NEWS: Update.
* Update.
* THANKS: Add Adam Borowski.
2018-03-18 Adam Borowski <>
Add support for zstd compression
* (zstd): Register compression program.
* doc/tar.1: Mention --zstd.
* doc/tar.texi: Document zstd support.
* src/buffer.c: Register zstd compression.
* src/suffix.c: Add suffixes zst and tzst.
* src/tar.c: New compression option --zstd.
2018-03-18 Pavel Raiskup <>
tests: fix race in dirrem01 and dirrem02
Previously the '--checkpoint-action=echo' was triggered after
'--checkpoint-action=sleep=1' - so the order of events *usually*
was (for --format='gnu'):
1. checkpoint handler before write of 'dir/sub' member
2. one-second delay
3. stderr write: 'tar: Write checkpoint 3'
4. write the member 'dir/sub' into the archive
5. check that the member's ctime has not been changed
6. genfile's detecting 'Write checkpoint', doing unlink
But sometimes, the genfile was fast enough to win the race and
unlinked the directory before the member was written into the
archive (IOW, the order was 1-2-3-6-4-5). This led to the
occasional warning 'tar: dir/sub: file changed as we read it'.
Swap the order of 'sleep=1' and 'echo' actions so the genfile
utility has (hopefully) enough time to do the unlink before
writing the file into the archive (enforce 1-2-3-6-4-5 order).
* tests/ Swap 'sleep=1' and 'echo' actions.
* tests/ Likewise.
2018-03-13 Sergey Poznyakoff <>
Fix typos in the docs
2018-03-13 Sergey Poznyakoff <>
Provide a way to skip tests that create very large files
Define environment variable TARTEST_SKIP_LARGE_FILES=1 in order
to skip tests that require lots of disk space.
* tests/ (AT_SKIP_LARGE_FILES): New macro.
* tests/ Mark test with AT_SKIP_LARGE_FILES.
* tests/ Likewise.
* tests/star/ Likewise.
* tests/star/ Likewise.
* tests/star/ Likewise.
2018-03-13 Sergey Poznyakoff <>
Testsuite bugfix
* tests/ Define order of files within tested archive.
2018-03-13 Sergey Poznyakoff <>
testsuite: account for absolute file names starting with double
* tests/ Absolute file names can start with //
* tests/ Likewise.
2017-12-17 Sergey Poznyakoff <>
Version 1.30
# Main Makefile for GNU tar.
# Copyright 1994-1997, 1999-2001, 2003, 2007, 2009, 2013-2014, 2016-2017
# Free Software Foundation, Inc.
# Copyright 1994-2019 Free Software Foundation, Inc.
# This file is part of GNU tar.
# generated by automake 1.14 from
# generated by automake 1.15 from
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
# Copyright (C) 1994-2014 Free Software Foundation, Inc.
# This is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
......@@ -16,8 +16,7 @@
# Main Makefile for GNU tar.
# Copyright 1994-1997, 1999-2001, 2003, 2007, 2009, 2013-2014, 2016-2017
# Free Software Foundation, Inc.
# Copyright 1994-2019 Free Software Foundation, Inc.
# This file is part of GNU tar.
......@@ -60,7 +59,17 @@
# changelog_dir [mandatory] Directory where to create ChangeLog
# changelog_amend_file [optional] Amendment file
VPATH = @srcdir@
am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
am__is_gnu_make = { \
if test -z '$(MAKELEVEL)'; then \
false; \
elif test -n '$(MAKE_HOST)'; then \
true; \
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
true; \
else \
false; \
fi; \
am__make_running_with_option = \
case $${target_option-} in \
?) ;; \
......@@ -122,26 +131,12 @@ PRE_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
ChangeLog THANKS $(srcdir)/ $(srcdir)/ \