]> git.ipfire.org Git - thirdparty/tar.git/log
thirdparty/tar.git
5 years agoFix the logic of prepare_to_extract.
Sergey Poznyakoff [Mon, 22 Jun 2020 19:17:46 +0000 (22:17 +0300)] 
Fix the logic of prepare_to_extract.

* src/extract.c (prepare_to_extract): Return true to proceed with
the extraction, and false to skip the current member.  If extracting
over a pipe, skip unlinking logic.
(extract_archive): Update accordingly.

5 years agoMake sure link counting works for file names supplied with -T
Sergey Poznyakoff [Mon, 15 Jun 2020 18:10:46 +0000 (21:10 +0300)] 
Make sure link counting works for file names supplied with -T

* src/common.h (name_count): Remove extern.
(files_count): New enum.
(filename_args): New extern.
* src/names.c (name_count): Remove.
(files_count): New variable.
(name_add_name,name_add_file): Update filename_args.
* src/create.c (create_archive): Set trivial_link_count depending on
the filename_args.

5 years agoRemove freemanuals.texi
Alfred M. Szmidt [Wed, 10 Jun 2020 12:26:45 +0000 (08:26 -0400)] 
Remove freemanuals.texi

* doc/Makefile.am (tar_TEXINFOS): Remove freemanuals.texi.
* doc/freemanuals.texi: Delete file.
* doc/tar.texi (Free Software Needs Free Documentation): Remove
appendix.

5 years agoFix typo in docs
Sergey Poznyakoff [Wed, 3 Jun 2020 07:55:51 +0000 (10:55 +0300)] 
Fix typo in docs

5 years agoBugfix
Sergey Poznyakoff [Wed, 3 Jun 2020 06:31:41 +0000 (09:31 +0300)] 
Bugfix

* src/sparse.c (sparse_diff_file): Fix return value.

5 years agotar: avoid read overrun
Paul Eggert [Tue, 19 May 2020 18:52:01 +0000 (11:52 -0700)] 
tar: avoid read overrun

Problem reported by Timotej Kapus in:
https://lists.gnu.org/r/bug-tar/2020-05/msg00001.html
* src/transform.c (parse_transform_expr):
Diagnose ‘--transform='s'’ instead of continuing past '\0'.

5 years agoFix handling of linked rename chains in incremental backups
Sergey Poznyakoff [Sat, 15 Feb 2020 08:57:35 +0000 (10:57 +0200)] 
Fix handling of linked rename chains in incremental backups

* src/incremen.c: Change the meaning of the DIRF_RENAMED flag.  Now it
marks a directory which is the last one in a chain of renames.
Regular renamed directories are recognized by their orig member being
non-NULL.  Directories marked with DIRF_RENAMED start encoding of renames.
(procdir): Clear DIRF_RENAMED flag on directories which are origins for
renames.
(makedumpdir): Use the orig member to check if the directory is a
result of a rename.
(store_rename): Move the check for DIR_IS_RENAMED to the caller. Don't
clear the DIRF_RENAMED, it is not needed any more.

* tests/rename06.at: New test.
* tests/Makefile.am: Add rename06.at
* tests/testsuite.at: Likewise.

5 years agoUpdate copyright years
Sergey Poznyakoff [Sat, 8 Feb 2020 11:21:13 +0000 (13:21 +0200)] 
Update copyright years

5 years agoFix the --no-overwrite-dir option
Sergey Poznyakoff [Sat, 8 Feb 2020 11:01:47 +0000 (13:01 +0200)] 
Fix the --no-overwrite-dir option

Given this option, tar failed to preserve permissions of empty directories
and to create files under directories owned by the current user that did
not have the S_IWUSR bit set.

* src/extract.c (fd_chmod): Rename to fd_i_chmod.
(fd_chmod): New function.
(safe_dir_mode): New function.
(extract_dir): Special handling for existing directories in
--no-overwrite-dir mode.
* tests/extrac23.at: New file.
* tests/Makefile.am: Add new test case.
* tests/testsuite.at: Likewise.

5 years agoWildcards in exclude-vcs-ignore mode should not match slash
Sergey Poznyakoff [Tue, 3 Dec 2019 07:55:02 +0000 (09:55 +0200)] 
Wildcards in exclude-vcs-ignore mode should not match slash

* src/exclist.c (info_attach_exclist): Use the FNM_FILE_NAME flag.

5 years agoVersion 1.32.90
Sergey Poznyakoff [Wed, 27 Nov 2019 16:51:58 +0000 (18:51 +0200)] 
Version 1.32.90

5 years agoTestsuite fixes
Sergey Poznyakoff [Mon, 25 Nov 2019 06:01:04 +0000 (08:01 +0200)] 
Testsuite fixes

* tests/sparse06.at: Skip the test if genfile is unable to create
sparse files.
* tests/sptrcreat.at: Likewise.
* tests/sptrdiff00.at: Likewise.
* tests/sptrdiff01.at: Likewise.

5 years agoAnother testsuite fix.
Sergey Poznyakoff [Thu, 14 Nov 2019 05:58:17 +0000 (07:58 +0200)] 
Another testsuite fix.

* tests/extrac11.at: Skip test if ulimit fails.

5 years agoTestsuite fix.
Sergey Poznyakoff [Wed, 13 Nov 2019 06:37:41 +0000 (08:37 +0200)] 
Testsuite fix.

* tests/remfiles10.at: Don't expect EINVAL when trying to remove
CWD.

5 years agoConsistently use x2realloc for buffer reallocation
Sergey Poznyakoff [Sun, 25 Aug 2019 11:41:17 +0000 (14:41 +0300)] 
Consistently use x2realloc for buffer reallocation

* src/create.c (create_archive): Use x2realloc
* src/names.c (copy_name)
(add_hierarchy_to_namelist): Use x2realloc

5 years agoFix extraction of symbolic links hardlinked to another symbolic links
Sergey Poznyakoff [Sun, 18 Aug 2019 20:40:54 +0000 (23:40 +0300)] 
Fix extraction of symbolic links hardlinked to another symbolic links

* src/extract.c (create_placeholder_file): Take additional argument:
the delayed_link entry after which to the newly created one.
(extract_link): Create a placeholder file if the target link name
exists in the delayed_link list.

6 years agoFix --delay-directory-restore on archives with reversed member ordering.
Sergey Poznyakoff [Thu, 11 Apr 2019 10:45:32 +0000 (13:45 +0300)] 
Fix --delay-directory-restore on archives with reversed member ordering.

* src/extract.c (find_direct_ancestor): Remove useless test.
(delay_set_stat): If the file name being added is already in
the list, update stored data instead of creating a new entry.
This works for archives with reversed order of members.
* tests/extrac22.at: New testcase.
* tests/Makefile.am: Add new testcase.
* tests/testsuite.at: Include new testcase.

6 years agoMinor change
Sergey Poznyakoff [Thu, 28 Mar 2019 12:01:58 +0000 (14:01 +0200)] 
Minor change
* scripts/backup.in: Fix typo

6 years agoTypesetting fixes in the manpage
Sergey Poznyakoff [Thu, 28 Mar 2019 11:58:44 +0000 (13:58 +0200)] 
Typesetting fixes in the manpage

Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
6 years agoPOSIX extended format headers do not include PID by default
Zachary Vance [Mon, 11 Mar 2019 02:12:19 +0000 (19:12 -0700)] 
POSIX extended format headers do not include PID by default

The intent is to make binary-equivalent PAX archives easy to create.  If
POSIXLY_CORRECT is set, the POSIX standard default is used, which embeds
the pid.

* src/common.h (posixly_correct): New global.
* src/tar.c (decode_options): Detect the POSIXLY_CORRECT environment
variable.
* src/buffer.c (add_chunk_header): Change filenames of multipart files to
omit the pid.
* src/xheader.c (HEADER_TEMPLATE): New macro.
(xheader_xhdr_name, xheader_ghdr_name): Use HEADER_TEMPLATE to select
the template for the POSIX extended header name.
* doc/tar.texi: Document the change.

Signed-off-by: Zachary Vance <za3k@za3k.com>
6 years agoCheck return value from xgetcwd
Sergey Poznyakoff [Sun, 3 Mar 2019 07:02:20 +0000 (09:02 +0200)] 
Check return value from xgetcwd

* src/misc.c (chdir_arg,tar_getcdpath): Check for non-NULL
return from xgetcwd. The function returns NULL for any
error originating from getcwd.

6 years agoVersion 1.32 release_1_32
Sergey Poznyakoff [Sat, 23 Feb 2019 12:54:53 +0000 (14:54 +0200)] 
Version 1.32

6 years agoMinor fixes in docs.
Sergey Poznyakoff [Mon, 4 Feb 2019 19:30:00 +0000 (21:30 +0200)] 
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.

6 years agoFix typos in the documentation
Daniel Le [Sun, 8 Apr 2018 09:06:33 +0000 (17:06 +0800)] 
Fix typos in the documentation

Short option "t" was mistranslated to "--test" instead of "--list" in commit
67cad0792b4e6cf22c6cb1b167b149cd176d49f9.

6 years agoFix build on AIX
Sergey Poznyakoff [Tue, 15 Jan 2019 13:21:03 +0000 (15:21 +0200)] 
Fix build on AIX

* src/unlink.c (flush_deferred_unlinks): Avoid possible duplicate case
(if ENOTEMPTY==EEXIST)

6 years agoVersion 1.31.90
Sergey Poznyakoff [Tue, 15 Jan 2019 12:38:02 +0000 (14:38 +0200)] 
Version 1.31.90

6 years agoEnsure gnu format when running checkpoint tests
Sergey Poznyakoff [Mon, 14 Jan 2019 21:32:15 +0000 (23:32 +0200)] 
Ensure gnu format when running checkpoint tests

6 years agoFix compression tests
Sergey Poznyakoff [Mon, 14 Jan 2019 16:08:21 +0000 (18:08 +0200)] 
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 byte-to-byte
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 problem
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/Makefile.am: Remove generation of compress-*.at files.
* tests/compress.at.in: Remove.
* tests/compress.m4: New file.
* tests/testsuite.at: Include compress.m4, use TAR_CHECK_COMPRESS to
check compression options.

6 years agoFix possible NULL dereference (savannah bug #55369)
Sergey Poznyakoff [Mon, 14 Jan 2019 13:22:09 +0000 (15:22 +0200)] 
Fix possible NULL dereference (savannah bug #55369)

* src/sparse.c (pax_decode_header): Check return from find_next_block.

6 years agoFix compilation without iconv.
Sergey Poznyakoff [Mon, 14 Jan 2019 12:46:43 +0000 (14:46 +0200)] 
Fix compilation without iconv.

6 years agoFix iconv usage.
Sergey Poznyakoff [Mon, 14 Jan 2019 11:59:39 +0000 (13:59 +0200)] 
Fix iconv usage.

Patch by Christian Weisgerber.

* src/utf8.c (utf8_convert): non-zero return from iconv means failure.

6 years agotests: fix numeric.at for BSD
Pavel Raiskup [Thu, 2 Jun 2016 05:28:01 +0000 (07:28 +0200)] 
tests: fix numeric.at for BSD

While creating file, BSD kernels inherit the group ownership from
parent directory.
http://lists.gnu.org/archive/html/bug-tar/2016-06/msg00000.html

* tests/numeric.at: Attempt to 'chown' the newly created directory
to proper group (at least on affected machines that command is
expected to succeed).

6 years agoFix typo in manpage.
Sergey Poznyakoff [Mon, 14 Jan 2019 10:48:16 +0000 (12:48 +0200)] 
Fix typo in manpage.

6 years agoFix expected output in dirrem tests.
Sergey Poznyakoff [Mon, 14 Jan 2019 10:26:59 +0000 (12:26 +0200)] 
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 timing.
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/dirrem01.at: Suppress the file-changed warning.
* tests/dirrem02.at: Likewise.

6 years agoFix the use of --checkpoint without explicit --checkpoint-action
Sergey Poznyakoff [Sat, 12 Jan 2019 07:41:44 +0000 (09:41 +0200)] 
Fix the use of --checkpoint without explicit --checkpoint-action

* src/checkpoint.c (checkpoint_finish_compile): Set default action,
if necessary.
* tests/checkpoint/defaults.at: New testcase.
* tests/checkpoint/dot-compat.at: New testcase.
* tests/checkpoint/dot-int.at: New testcase.
* tests/checkpoint/dot.at: New testcase.
* tests/checkpoint/interval.at: New testcase.
* tests/Makefile.am: Add new testcases.
* tests/testsuite.at Include new testcases.

6 years agoRemove erroneous abort() call
Sergey Poznyakoff [Thu, 10 Jan 2019 16:18:49 +0000 (18:18 +0200)] 
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,

See http://lists.gnu.org/archive/html/bug-tar/2019-01/msg00019.html
for details.

* src/extract.c (maybe_recoverable): Remove misplaced call to abort().

6 years agoVersion 1.31 release_1_31
Sergey Poznyakoff [Wed, 2 Jan 2019 18:01:10 +0000 (20:01 +0200)] 
Version 1.31

6 years agoFix the difflink test
Sergey Poznyakoff [Fri, 28 Dec 2018 15:53:35 +0000 (17:53 +0200)] 
Fix the difflink test

Hardlinking a symlink produces hardlink on BSD and symlink
on GNU/Linux. Avoid the ambiguity.

* tests/difflink.at: Create hard link from a regular file.

6 years agoWork over a bug in gnulib error()
Sergey Poznyakoff [Fri, 28 Dec 2018 15:49:08 +0000 (17:49 +0200)] 
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 getprogname()
instead. Due to this messages output by tar subprocess (which sets its
program name to 'tar (child)') become indiscernible from those printed
by the main process. In particular, this breaks the remfiles01.at and
remfiles02.at test cases.

* configure.ac: Define ENABLE_ERROR_PRINT_PROGNAME if using
gnulib error().
* src/tar.c [ENABLE_ERROR_PRINT_PROGNAME] (tar_print_progname): New function.
(main) [ENABLE_ERROR_PRINT_PROGNAME]: Set error_print_progname.

6 years agoImplement the "wait" checkpoint action.
Sergey Poznyakoff [Fri, 28 Dec 2018 11:17:44 +0000 (13:17 +0200)] 
Implement the "wait" checkpoint action.

This action instructs tar to pause until given signal is delivered.
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/dirrem01.at: Adjust genfile and tar command line arguments
to use the new feature.
* tests/dirrem02.at: Likewise.
* tests/filerem01.at: Likewise.
* tests/filerem02.at: Likewise.
* tests/grow.at: Likewise.
* tests/sptrcreat.at: Likewise.
* tests/sptrdiff00.at: Likewise.
* tests/sptrdiff01.at: Likewise.
* tests/truncate.at: Likewise.

6 years agoFix CVE-2018-20482
Sergey Poznyakoff [Thu, 27 Dec 2018 15:48:57 +0000 (17:48 +0200)] 
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 calculation.
Handle short read condition.
(pax_decode_header): Fix dumped_size calculation.
* tests/Makefile.am: Add new testcases.
* tests/testsuite.at: Likewise.

* tests/sptrcreat.at: New file.
* tests/sptrdiff00.at: New file.
* tests/sptrdiff01.at: New file.

6 years agoDisallow modifications to the global pax extended header in update mode.
Sergey Poznyakoff [Fri, 21 Dec 2018 12:18:14 +0000 (14:18 +0200)] 
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
  http://lists.gnu.org/archive/html/bug-tar/2018-12/msg00007.html

* 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, instead
of trying to write global extended header record.

6 years agoBugfix
Sergey Poznyakoff [Fri, 21 Dec 2018 11:42:29 +0000 (13:42 +0200)] 
Bugfix

Bug reported in
  http://lists.gnu.org/archive/html/bug-tar/2018-12/msg00014.html

* src/names.c (collect_and_sort_names): Fix iteration over namelist.

6 years agoFix semantics of -K used together with explicit member names.
Sergey Poznyakoff [Fri, 21 Dec 2018 11:24:29 +0000 (13:24 +0200)] 
Fix semantics of -K used together with explicit member names.

This also fixes the bug reported in
  http://lists.gnu.org/archive/html/bug-tar/2018-12/msg00012.html

* 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.

6 years agoFix error handling when reading incremental snapshots
Sergey Poznyakoff [Fri, 21 Dec 2018 05:59:02 +0000 (07:59 +0200)] 
Fix error handling when reading incremental snapshots

Bug reported in
  http://lists.gnu.org/archive/html/bug-tar/2018-12/msg00008.html

* incremen.c (read_incr_db_01): Don't try to continue after errors.

6 years agoReject pax options starting with equals sign
Sergey Poznyakoff [Fri, 21 Dec 2018 05:32:47 +0000 (07:32 +0200)] 
Reject pax options starting with equals sign

Bug reported in
  http://lists.gnu.org/archive/html/bug-tar/2018-12/msg00010.html

* xheader.c (xheader_set_keyword_equal): Bail out if the keyword starts
with =

6 years agoFix buffer overflow
Sergey Poznyakoff [Thu, 20 Dec 2018 18:30:58 +0000 (20:30 +0200)] 
Fix buffer overflow

Bug reported in
  http://lists.gnu.org/archive/html/bug-tar/2018-12/msg00011.html

* src/xheader.c (xheader_format_name): fix length calculation

6 years agoFix improper memory access
Sergey Poznyakoff [Thu, 20 Dec 2018 15:53:40 +0000 (17:53 +0200)] 
Fix improper memory access

Bug reported in
  http://lists.gnu.org/archive/html/bug-tar/2018-12/msg00009.html

* src/transform.c (parse_transform_expr): Check if re is not empty
before accessing its last byte.

6 years agoFix parsing of ACLs
Sergey Poznyakoff [Sat, 24 Nov 2018 20:10:53 +0000 (22:10 +0200)] 
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
headers.

* src/xattrs.c (xattrs_acls_cleanup): New function.
(xattrs__acls_get_a,xattrs__acls_get_d): Use xattrs_acls_cleanup.

6 years agoDon't try to read past the end of header string fields
Sergey Poznyakoff [Sat, 24 Nov 2018 15:49:25 +0000 (17:49 +0200)] 
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.

6 years agoFix verbose ACL listing
Sergey Poznyakoff [Mon, 12 Nov 2018 07:15:22 +0000 (09:15 +0200)] 
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.

6 years agotar: fix numbered backup bug
Paul Eggert [Sun, 28 Oct 2018 23:23:51 +0000 (16:23 -0700)] 
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.

6 years ago* src/tar.c (expand_pax_option): Pacify recent GCC.
Paul Eggert [Sun, 28 Oct 2018 23:07:44 +0000 (16:07 -0700)] 
* src/tar.c (expand_pax_option): Pacify recent GCC.

6 years agobuild: update gnulib submodule to latest
Paul Eggert [Sun, 28 Oct 2018 22:37:56 +0000 (15:37 -0700)] 
build: update gnulib submodule to latest

* src/misc.c (maybe_backup_file): Adjust to Gnulib change.

7 years agoMinor fixes in wordsplit.c
Sergey Poznyakoff [Thu, 2 Aug 2018 13:36:48 +0000 (16:36 +0300)] 
Minor fixes in wordsplit.c

7 years agobuild: update gnulib submodule to latest
Paul Eggert [Thu, 2 Aug 2018 06:59:49 +0000 (23:59 -0700)] 
build: update gnulib submodule to latest

7 years agoSilence gcc warnings in wordsplit
Sergey Poznyakoff [Tue, 31 Jul 2018 13:05:28 +0000 (16:05 +0300)] 
Silence gcc warnings in wordsplit

7 years agoFix double-free introduced by 577dc345
Sergey Poznyakoff [Tue, 31 Jul 2018 12:57:11 +0000 (15:57 +0300)] 
Fix double-free introduced by 577dc345

* src/utf8.c (utf8_convert): Don't store freed value in *output

7 years agoReport race on systems without O_DIRECTORY
Pavel Raiskup [Tue, 31 Jul 2018 09:13:48 +0000 (12:13 +0300)] 
Report race on systems without O_DIRECTORY

* src/names.c (collect_and_sort_names): Report ENOTDIR after
successful fstat() but !S_ISDIR.

7 years agoAvoid some resource leaks
Pavel Raiskup [Tue, 31 Jul 2018 09:06:09 +0000 (12:06 +0300)] 
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
const.
(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.

7 years agoSync wordsplit and paxutils with the most recent versions
Sergey Poznyakoff [Tue, 31 Jul 2018 08:53:00 +0000 (11:53 +0300)] 
Sync wordsplit and paxutils with the most recent versions

7 years ago* doc/tar.1: Fix font typo noted by esr.
Paul Eggert [Wed, 13 Jun 2018 22:06:43 +0000 (15:06 -0700)] 
* doc/tar.1: Fix font typo noted by esr.

7 years ago* doc/tar.1: Don't refer to nonexistent tar(5).
Paul Eggert [Wed, 16 May 2018 16:03:47 +0000 (09:03 -0700)] 
* doc/tar.1: Don't refer to nonexistent tar(5).

7 years ago--one-top-level: avoid a heap-buffer-overflow
Jim Meyering [Sat, 7 Apr 2018 15:41:46 +0000 (08:41 -0700)] 
--one-top-level: avoid a heap-buffer-overflow

* NEWS: Mention this.
* src/suffix.c (strip_compression_suffix): Fix string comparison guard.
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 /j/gcc/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:407
    #1 0x5670f3 in strip_compression_suffix /j/tar/src/suffix.c:107
    #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 [0x6020000002f0,0x6020000002f6)
allocated by thread T0 here:
    #0 0x4d0710 in __interceptor_malloc /j/gcc/libsanitizer/asan/asan_malloc_linux.cc:86
    #1 0x4908ad in __interceptor_strndup /j/gcc/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:326
    #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

7 years agoTiny fix
Andrew Hounsell [Sat, 7 Apr 2018 08:07:57 +0000 (11:07 +0300)] 
Tiny fix

* doc/snapshot.texi: Fix a typo
* scripts/tar-snapshot-edit: Fix a typo

7 years agotests: avoid test failure with non-ancient autoconf
Jim Meyering [Sun, 25 Mar 2018 20:29:13 +0000 (13:29 -0700)] 
tests: avoid test failure with non-ancient autoconf

Running "make check" would fail with this:
  T-nonl.at:30: error: m4_divert_push: cannot change diversion
  to `GROW' inside m4_expand
* tests/T-nonl.at: Use printf in place of AS_ECHO_N.
These days, printf should work for everyone.

7 years agomaint: avoid -Wstringop-truncation warnings from upcoming GCC8
Jim Meyering [Mon, 19 Mar 2018 04:32:19 +0000 (21:32 -0700)] 
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 \
  [-Wstringop-truncation]

7 years agomaint: avoid -Wstringop-truncation warnings upcoming GCC8
Jim Meyering [Mon, 19 Mar 2018 04:20:28 +0000 (21:20 -0700)] 
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: '__builtin_strncpy'\
   specified bound 100 equals destination size \
   [-Werror=stringop-truncation]

7 years agomaint: avoid warnings from upcoming GCC8
Jim Meyering [Mon, 19 Mar 2018 00:59:25 +0000 (17:59 -0700)] 
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.

7 years agoRewrite struct tm formatting
Sergey Poznyakoff [Sat, 7 Apr 2018 07:33:27 +0000 (10:33 +0300)] 
Rewrite struct tm formatting

* src/list.c (tartime): Use strftime instead of manually formatting
fields of the struct tm. This should also suppress some gcc warnings.

7 years agotests: add coverage for new --zstd and all other compression tools
Jim Meyering [Mon, 26 Mar 2018 04:17:18 +0000 (21:17 -0700)] 
tests: add coverage for new --zstd and all other compression tools

* tests/compress.at.in: New file: template from which each
per-compression-tool test is derived.
* tests/Makefile.am (TESTSUITE_AT): Add it.
(EXTRA_DIST): Add compress.at.in.
(compress-*.at): New rules to generate a file/tests for each compression tool.
* tests/testsuite.at (Compression): Add each of these generated
files in a new section.
* tests/.gitignore: Ignore the new generated files.

7 years agoFix typo
Aaron Schrab [Sun, 18 Mar 2018 10:06:36 +0000 (12:06 +0200)] 
Fix typo

7 years agoVersion 1.30.90
Sergey Poznyakoff [Sun, 18 Mar 2018 08:38:16 +0000 (10:38 +0200)] 
Version 1.30.90

* NEWS: Update.
* configure.ac: Update.
* THANKS: Add Adam Borowski.

7 years agoAdd support for zstd compression
Adam Borowski [Sun, 18 Mar 2018 08:24:13 +0000 (10:24 +0200)] 
Add support for zstd compression

* configure.ac (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.

7 years agotests: fix race in dirrem01 and dirrem02
Pavel Raiskup [Thu, 4 Jan 2018 17:55:12 +0000 (18:55 +0100)] 
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/dirrem01.at: Swap 'sleep=1' and 'echo' actions.
* tests/dirrem02.at: Likewise.

7 years agoFix typos in the docs
Sergey Poznyakoff [Tue, 13 Mar 2018 20:20:53 +0000 (22:20 +0200)] 
Fix typos in the docs

7 years agoProvide a way to skip tests that create very large files
Sergey Poznyakoff [Tue, 13 Mar 2018 19:55:37 +0000 (21:55 +0200)] 
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/testsuite.at (AT_SKIP_LARGE_FILES): New macro.
* tests/sparse03.at: Mark test with AT_SKIP_LARGE_FILES.
* tests/sparse05.at: Likewise.
* tests/star/pax-big-10g.at: Likewise.
* tests/star/ustar-big-2g.at: Likewise.
* tests/star/ustar-big-8g.at: Likewise.

7 years agoTestsuite bugfix
Sergey Poznyakoff [Tue, 13 Mar 2018 07:59:11 +0000 (09:59 +0200)] 
Testsuite bugfix

* tests/difflink.at: Define order of files within tested archive.

7 years agotestsuite: account for absolute file names starting with double slash
Sergey Poznyakoff [Tue, 13 Mar 2018 06:08:44 +0000 (08:08 +0200)] 
testsuite: account for absolute file names starting with double slash

* tests/incr08.at: Absolute file names can start with //
* tests/xform03.at: Likewise.

7 years agoVersion 1.30 release_1_30
Sergey Poznyakoff [Sun, 17 Dec 2017 10:28:30 +0000 (12:28 +0200)] 
Version 1.30

* configure.ac: Set version 1.30
* NEWS: Update.

7 years agoFix "concatenating" typo.
Paul Eggert [Mon, 20 Nov 2017 19:09:48 +0000 (11:09 -0800)] 
Fix "concatenating" typo.

Problem reported by Rodrigo Queiro in:
https://lists.gnu.org/r/bug-tar/2017-11/msg00021.html
* doc/intern.texi (Extensions): Fix typo.

7 years agoPort to gcc -Wimplicit-fallthrough=5
Paul Eggert [Sat, 18 Nov 2017 16:39:33 +0000 (08:39 -0800)] 
Port to gcc -Wimplicit-fallthrough=5

* src/common.h (FALLTHROUGH): New macro, for use with gcc
-Wimplicit-fallthrough=5, which is now the default when used with
Gnulib after commit 2017-05-16T16:23:52!eggert@cs.ucla.edu
and with --enable-gcc-warnings

7 years agoPort to Texinfo 6.4
Paul Eggert [Sat, 18 Nov 2017 16:39:33 +0000 (08:39 -0800)] 
Port to Texinfo 6.4

* doc/tar.texi (Sparse Recovery): Omit ‘.’ from anchor name,
as ‘makeinfo’ now complains about it.  All uses changed.

7 years agoDocument base-256 representation in GNU format
Paul Eggert [Sat, 18 Nov 2017 16:39:33 +0000 (08:39 -0800)] 
Document base-256 representation in GNU format

Problem reported by Rodrigo Queiro in:
https://lists.gnu.org/r/bug-tar/2017-11/msg00018.html
* doc/intern.texi (Standard, Extensions):
Document base-256 representations.

7 years agobuild: update gnulib submodule to latest
Paul Eggert [Sat, 18 Nov 2017 16:39:33 +0000 (08:39 -0800)] 
build: update gnulib submodule to latest

7 years agoFix typo caught by GCC 7.2.1
Paul Eggert [Sat, 18 Nov 2017 16:39:33 +0000 (08:39 -0800)] 
Fix typo caught by GCC 7.2.1

* lib/wordsplit.c (wordsplit_perror): Add missing "break;".

7 years agoUpdate docs
Sergey Poznyakoff [Thu, 16 Nov 2017 16:12:36 +0000 (18:12 +0200)] 
Update docs

* doc/Makefile.am: Add recipes.texi
* doc/recipes.texi: New file.
* doc/tar.texi: New appendix "Recipes"

7 years agotests: more deterministic xattr07
Pavel Raiskup [Mon, 28 Nov 2016 08:01:03 +0000 (09:01 +0100)] 
tests: more deterministic xattr07

* tests/xattr07.at: Define order of files within tested archive.

7 years agoMinor improvements in the docs.
Sergey Poznyakoff [Thu, 16 Nov 2017 12:31:53 +0000 (14:31 +0200)] 
Minor improvements in the docs.

7 years agoNew option --warning=failed-read
Sergey Poznyakoff [Thu, 16 Nov 2017 11:55:15 +0000 (13:55 +0200)] 
New option --warning=failed-read

* NEWS: Document the --warning=failed-read option.
* doc/tar.texi: Likewise.
* doc/tar.1: Likewise.
* src/common.h (WARN_FAILED_READ): New constant.
(WARNING_ENABLED): New macro.
* src/misc.c (close_diag, open_diag)
(read_diag_details, readlink_diag)
(savedir_diag, seek_diag_details)
(stat_diag): Suppress warnings if WARN_FAILED_READ is set.
* src/warning.c (failed-read): New keyword.

7 years agoFix docs
Sergey Poznyakoff [Thu, 16 Nov 2017 09:56:19 +0000 (11:56 +0200)] 
Fix docs

* doc/tar.texi: Fix description of the argument to --xattrs-exclude
and --xattrs-include option. It is a globbing pattern, not a regex.

Fix a typo (LZOP)

7 years agoFix the --delay-directory-restore option
Sergey Poznyakoff [Thu, 16 Nov 2017 09:26:44 +0000 (11:26 +0200)] 
Fix the --delay-directory-restore option

* src/extract.c (find_direct_ancestor): New function.
(create_placeholder_file): Set after_links member on delayed_set_stat
entries starting from the direct ancestor of the placeholder file.

* tests/extrac21.at: New testcase.
* tests/testsuite.at: Add extrac21
* tests/Makefile.am: Likewise.

* NEWS: Update.

7 years agoFix reporting of hardlink mismatch during compare
Sergey Poznyakoff [Thu, 9 Nov 2017 07:55:43 +0000 (09:55 +0200)] 
Fix reporting of hardlink mismatch during compare

* src/common.h (quote_n_colon): New prototype.
* src/misc.c (quote_n_colon): New function.
* src/compare.c (report_difference, diff_link): Use quote_n_colon.

* tests/difflink.at: New file.
* tests/Makefile.am: Add difflink.at
* tests/testsuite.at: Likewise.

7 years agoFix --verbatim-files-from
Sergey Poznyakoff [Thu, 9 Nov 2017 06:59:36 +0000 (08:59 +0200)] 
Fix --verbatim-files-from

* src/names.c (read_next_name): Don't unquote name read from the
file, if --verbatim-files-from option is in effect.
(names_options): improve description of --verbatim-files-from
* tests/T-null2.at: Test the change.

7 years agoFix typo
Sergey Poznyakoff [Thu, 9 Nov 2017 06:35:34 +0000 (08:35 +0200)] 
Fix typo

* doc/tar.texi

7 years agoFix the effect of --transform over hard link targets without the --absolute-names
Sergey Poznyakoff [Sat, 30 Sep 2017 07:04:02 +0000 (10:04 +0300)] 
Fix the effect of --transform over hard link targets without the --absolute-names

* src/create.c (file_count_links): Apply safer_name_suffix to the
hard link name prior to transforming it.
* tests/xform03.at: New test case.
* tests/Makefile.am: Add xform03.at
* tests/testsuite.at: Likewise.

7 years agoBugfix
Sergey Poznyakoff [Thu, 24 Aug 2017 19:18:39 +0000 (22:18 +0300)] 
Bugfix

* src/tar.c (tar_help_filter): Add missing break statement

8 years agoFix typo
Troels Thomsen [Thu, 29 Jun 2017 10:50:09 +0000 (12:50 +0200)] 
Fix typo

8 years agoFix non-deterministic archive type detection
Pavel Raiskup [Thu, 30 Mar 2017 11:30:15 +0000 (13:30 +0200)] 
Fix non-deterministic archive type detection

Due to analysis of partly uninitialized read-ahead buffer
(short_read call), we sometimes mistakenly classified very small
compressed archives as non-compressed; which in turn caused
extraction failure.

* src/buffer.c (check_compressed_archive): Don't assume that
archives smaller than BLOCKSIZE could be non-compressed, as tar
header always has at least one block.

8 years agoFix handling of directories removed during incremental tar run
Jonas Julino [Mon, 10 Apr 2017 14:37:39 +0000 (16:37 +0200)] 
Fix handling of directories removed during incremental tar run

Co-authored-by: Sergey Poznyakoff <gray@gnu.org.ua>
* paxutils: Upgrade
* src/create.c (create_archive): Use file_removed_diag
instead of calling the corresponding *_diag function
directly.
* tests/dirrem01.at: New testcase.
* tests/dirrem02.at: New testcase.
* tests/Makefile.am: Add new tests.
* tests/testsuite.at: Likewise.