diff --git a/Avoid-some-resource-leaks.patch b/Avoid-some-resource-leaks.patch deleted file mode 100644 index 12995b321d4df6ca3f5e0abc68769c20d2bf7cb7..0000000000000000000000000000000000000000 --- a/Avoid-some-resource-leaks.patch +++ /dev/null @@ -1,83 +0,0 @@ -From 577dc345653947a31b2841167dc1a9be0e44e043 Mon Sep 17 00:00:00 2001 -From: Pavel Raiskup -Date: Tue, 31 Jul 2018 12:06:09 +0300 -Subject: [PATCH 20/58] 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. ---- - src/incremen.c | 1 + - src/transform.c | 3 ++- - src/utf8.c | 9 ++++++--- - 3 files changed, 9 insertions(+), 4 deletions(-) - -diff --git a/src/incremen.c b/src/incremen.c -index ca611f6..7c26eb8 100644 ---- a/src/incremen.c -+++ b/src/incremen.c -@@ -915,6 +915,7 @@ store_rename (struct directory *dir, struct obstack *stk) - obstack_code_rename (stk, p->orig->name, p->name); - - obstack_code_rename (stk, "", prev->name); -+ free (temp_name); - } - } - } -diff --git a/src/transform.c b/src/transform.c -index 3fae3c0..6ef0da6 100644 ---- a/src/transform.c -+++ b/src/transform.c -@@ -101,7 +101,7 @@ add_segment (struct transform *tf) - } - - static void --add_literal_segment (struct transform *tf, char *str, char *end) -+add_literal_segment (struct transform *tf, const char *str, const char *end) - { - size_t len = end - str; - if (len) -@@ -403,6 +403,7 @@ parse_transform_expr (const char *expr) - cur++; - } - add_literal_segment (tf, beg, cur); -+ free(str); - - return p; - } -diff --git a/src/utf8.c b/src/utf8.c -index a018ce0..168d636 100644 ---- a/src/utf8.c -+++ b/src/utf8.c -@@ -68,7 +68,6 @@ utf8_convert (bool to_utf, char const *input, char **output) - char *ob; - size_t inlen; - size_t outlen; -- size_t rc; - iconv_t cd = utf8_init (to_utf); - - if (cd == 0) -@@ -83,9 +82,13 @@ utf8_convert (bool to_utf, char const *input, char **output) - outlen = inlen * MB_LEN_MAX + 1; - ob = *output = xmalloc (outlen); - ib = (char ICONV_CONST *) input; -- rc = iconv (cd, &ib, &inlen, &ob, &outlen); -+ if (iconv (cd, &ib, &inlen, &ob, &outlen) == -1) -+ { -+ free (*output); -+ return false; -+ } - *ob = 0; -- return rc != -1; -+ return true; - } - - --- -2.19.1 - diff --git a/Bugfix.patch b/Bugfix.patch deleted file mode 100644 index 37d75e860fe11cf5732817ac3747ad2e47952ca4..0000000000000000000000000000000000000000 --- a/Bugfix.patch +++ /dev/null @@ -1,29 +0,0 @@ -From ea3aea06f1da077dbb4092672dc7e8768ae4f84e Mon Sep 17 00:00:00 2001 -From: Sergey Poznyakoff -Date: Fri, 21 Dec 2018 13:42:29 +0200 -Subject: [PATCH 37/58] 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. ---- - src/names.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/names.c b/src/names.c -index d3728d8..025b682 100644 ---- a/src/names.c -+++ b/src/names.c -@@ -1857,7 +1857,7 @@ collect_and_sort_names (void) - - if (listed_incremental_option) - { -- for (name = namelist; name && name->name[0] == 0; name++) -+ for (name = namelist; name && name->name[0] == 0; name = name->next) - ; - if (name) - append_incremental_renames (name->directory); --- -2.19.1 - diff --git a/Disallow-modifications-to-the-global-pax-extended-he.patch b/Disallow-modifications-to-the-global-pax-extended-he.patch deleted file mode 100644 index cfdd8f3962e1b81daf9a4b2009c93f5b9928faac..0000000000000000000000000000000000000000 --- a/Disallow-modifications-to-the-global-pax-extended-he.patch +++ /dev/null @@ -1,75 +0,0 @@ -From 3c2a2cd94d3b062aa5bf850b82364039ec9c6029 Mon Sep 17 00:00:00 2001 -From: Sergey Poznyakoff -Date: Fri, 21 Dec 2018 14:18:14 +0200 -Subject: [PATCH 38/58] 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. ---- - src/common.h | 1 + - src/update.c | 2 +- - src/xheader.c | 8 ++++++++ - 3 files changed, 10 insertions(+), 1 deletion(-) - -diff --git a/src/common.h b/src/common.h -index 32e6f8b..885169f 100644 ---- a/src/common.h -+++ b/src/common.h -@@ -836,6 +836,7 @@ void xheader_store (char const *keyword, struct tar_stat_info *st, - void xheader_read (struct xheader *xhdr, union block *header, off_t size); - void xheader_write (char type, char *name, time_t t, struct xheader *xhdr); - void xheader_write_global (struct xheader *xhdr); -+void xheader_forbid_global (void); - void xheader_finish (struct xheader *hdr); - void xheader_destroy (struct xheader *hdr); - char *xheader_xhdr_name (struct tar_stat_info *st); -diff --git a/src/update.c b/src/update.c -index 2f823e4..4aa4ac6 100644 ---- a/src/update.c -+++ b/src/update.c -@@ -111,7 +111,7 @@ update_archive (void) - - name_gather (); - open_archive (ACCESS_UPDATE); -- buffer_write_global_xheader (); -+ xheader_forbid_global (); - - while (!found_end) - { -diff --git a/src/xheader.c b/src/xheader.c -index e938502..010cab7 100644 ---- a/src/xheader.c -+++ b/src/xheader.c -@@ -469,6 +469,14 @@ xheader_write_global (struct xheader *xhdr) - } - } - -+/* Forbid modifications of the global extended header */ -+void -+xheader_forbid_global (void) -+{ -+ if (keyword_global_override_list) -+ USAGE_ERROR ((0, 0, _("can't update global extended header record"))); -+} -+ - void - xheader_xattr_init (struct tar_stat_info *st) - { --- -2.19.1 - diff --git a/Fix-CVE-2018-20482.patch b/Fix-CVE-2018-20482.patch deleted file mode 100644 index 65e209df00eb4a58cffe18055770b38b85749df8..0000000000000000000000000000000000000000 --- a/Fix-CVE-2018-20482.patch +++ /dev/null @@ -1,465 +0,0 @@ -From fd555fc06bfb4eae3eb48fbc150d20a4dda0d150 Mon Sep 17 00:00:00 2001 -From: Sergey Poznyakoff -Date: Thu, 27 Dec 2018 17:48:57 +0200 -Subject: [PATCH] Fixed a denial of service when the '--sparse' option -mishandles file shrinkage during read access(CVE-2018-20482) -https://github.com/praiskup/tar/commit/c15c42ccd1e2377945fd0414eca1a49294bff454 - -Signed-off-by: fangyufa1 ---- - NEWS | 32 +++++++++++++++++- - src/sparse.c | 82 +++++++++++++++++++++++++++++---------------- - tests/Makefile.am | 5 ++- - tests/sptrcreat.at | 62 ++++++++++++++++++++++++++++++++++ - tests/sptrdiff00.at | 55 ++++++++++++++++++++++++++++++ - tests/sptrdiff01.at | 55 ++++++++++++++++++++++++++++++ - tests/testsuite.at | 5 ++- - 7 files changed, 264 insertions(+), 32 deletions(-) - create mode 100644 tests/sptrcreat.at - create mode 100644 tests/sptrdiff00.at - create mode 100644 tests/sptrdiff01.at - -diff --git a/NEWS b/NEWS -index cd15fa1..283c376 100644 ---- a/NEWS -+++ b/NEWS -@@ -1,7 +1,37 @@ --GNU tar NEWS - User visible changes. 2017-12-17 -+GNU tar NEWS - User visible changes. 2018-12-27 - Please send GNU tar bug reports to - - -+version 1.30.90 (Git) -+ -+* Fix heap-buffer-overrun with --one-top-level. -+Bug introduced with the addition of that option in 1.28. -+ -+* Support for zstd compression -+ -+New option '--zstd' instructs tar to use zstd as compression program. -+When listing, extractng and comparing, zstd compressed archives are -+recognized automatically. -+When '-a' option is in effect, zstd compression is selected if the -+destination archive name ends in '.zst' or '.tzst'. -+ -+* The -K option interacts properly with member names given in the command line -+ -+Names of members to extract can be specified along with the "-K NAME" -+option. In this case, tar will extract NAME and those of named members -+that appear in the archive after it, which is consistent with the -+semantics of the option. -+ -+Previous versions of tar extracted NAME, those of named members that -+appeared before it, and everything after it. -+ -+* Fix CVE-2018-20482 -+ -+When creating archives with the --sparse option, previous versions of -+tar would loop endlessly if a sparse file had been truncated while -+being archived. -+ -+ - version 1.30 - Sergey Poznyakoff, 2017-12-17 - - * Member names containing '..' components are now skipped when extracting. -diff --git a/src/sparse.c b/src/sparse.c -index 6ec069d..726facd 100644 ---- a/src/sparse.c -+++ b/src/sparse.c -@@ -1,6 +1,6 @@ - /* Functions for dealing with sparse files - -- Copyright 2003-2007, 2010, 2013-2017 Free Software Foundation, Inc. -+ Copyright 2003-2007, 2010, 2013-2018 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the -@@ -428,16 +428,30 @@ sparse_dump_region (struct tar_sparse_file *file, size_t i) - bufsize); - return false; - } -- if (bytes_read == 0) -- { -- char buf[UINTMAX_STRSIZE_BOUND]; -- FATAL_ERROR ((0, 0, -- ngettext ("%s: File shrank by %s byte", -- "%s: File shrank by %s bytes", -- bytes_left), -- quotearg_colon (file_name), -- offtostr (bytes_left, buf))); -- } -+ else if (bytes_read == 0) -+ { -+ char buf[UINTMAX_STRSIZE_BOUND]; -+ struct stat st; -+ size_t n; -+ if (fstat (file->fd, &st) == 0) -+ n = file->stat_info->stat.st_size - st.st_size; -+ else -+ n = file->stat_info->stat.st_size -+ - (file->stat_info->sparse_map[i].offset -+ + file->stat_info->sparse_map[i].numbytes -+ - bytes_left); -+ -+ WARNOPT (WARN_FILE_SHRANK, -+ (0, 0, -+ ngettext ("%s: File shrank by %s byte; padding with zeros", -+ "%s: File shrank by %s bytes; padding with zeros", -+ n), -+ quotearg_colon (file_name), -+ STRINGIFY_BIGINT (n, buf))); -+ if (! ignore_failed_read_option) -+ set_exit_status (TAREXIT_DIFFERS); -+ return false; -+ } - - memset (blk->buffer + bytes_read, 0, BLOCKSIZE - bytes_read); - bytes_left -= bytes_read; -@@ -475,9 +489,9 @@ sparse_extract_region (struct tar_sparse_file *file, size_t i) - return false; - } - set_next_block_after (blk); -+ file->dumped_size += BLOCKSIZE; - count = blocking_write (file->fd, blk->buffer, wrbytes); - write_size -= count; -- file->dumped_size += count; - mv_size_left (file->stat_info->archive_file_size - file->dumped_size); - file->offset += count; - if (count != wrbytes) -@@ -610,20 +624,24 @@ check_sparse_region (struct tar_sparse_file *file, off_t beg, off_t end) - offset, rdsize); - return false; - } -- -- if (bytes_read == 0 -- || !zero_block_p (diff_buffer, bytes_read)) -- { -- char begbuf[INT_BUFSIZE_BOUND (off_t)]; -- const char *msg = bytes_read ? _("File fragment at %s is not a hole") -- : _("Hole starting at %s is truncated"); -- -- report_difference (file->stat_info, msg, offtostr (beg, begbuf)); -- return false; -- } -+ else if (bytes_read == 0) -+ { -+ report_difference (file->stat_info, _("Size differs")); -+ return false; -+ } -+ -+ if (!zero_block_p (diff_buffer, bytes_read)) -+ { -+ char begbuf[INT_BUFSIZE_BOUND (off_t)]; -+ report_difference (file->stat_info, -+ _("File fragment at %s is not a hole"), -+ offtostr (offset, begbuf)); -+ return false; -+ } - - offset += bytes_read; - } -+ - return true; - } - -@@ -650,6 +668,7 @@ check_data_region (struct tar_sparse_file *file, size_t i) - return false; - } - set_next_block_after (blk); -+ file->dumped_size += BLOCKSIZE; - bytes_read = safe_read (file->fd, diff_buffer, rdsize); - if (bytes_read == SAFE_READ_ERROR) - { -@@ -660,11 +679,14 @@ check_data_region (struct tar_sparse_file *file, size_t i) - rdsize); - return false; - } -- file->dumped_size += bytes_read; -+ else if (bytes_read == 0) -+ { -+ report_difference (¤t_stat_info, _("Size differs")); -+ return false; -+ } - size_left -= bytes_read; - mv_size_left (file->stat_info->archive_file_size - file->dumped_size); -- if (bytes_read == 0 -- || memcmp (blk->buffer, diff_buffer, bytes_read)) -+ if (memcmp (blk->buffer, diff_buffer, bytes_read)) - { - report_difference (file->stat_info, _("Contents differ")); - return false; -@@ -1229,7 +1251,8 @@ pax_decode_header (struct tar_sparse_file *file) - union block *blk; - char *p; - size_t i; -- -+ off_t start; -+ - #define COPY_BUF(b,buf,src) do \ - { \ - char *endp = b->buffer + BLOCKSIZE; \ -@@ -1245,7 +1268,6 @@ pax_decode_header (struct tar_sparse_file *file) - if (src == endp) \ - { \ - set_next_block_after (b); \ -- file->dumped_size += BLOCKSIZE; \ - b = find_next_block (); \ - if (!b) \ - FATAL_ERROR ((0, 0, _("Unexpected EOF in archive"))); \ -@@ -1258,8 +1280,8 @@ pax_decode_header (struct tar_sparse_file *file) - dst[-1] = 0; \ - } while (0) - -+ start = current_block_ordinal (); - set_next_block_after (current_header); -- file->dumped_size += BLOCKSIZE; - blk = find_next_block (); - if (!blk) - FATAL_ERROR ((0, 0, _("Unexpected EOF in archive"))); -@@ -1298,6 +1320,8 @@ pax_decode_header (struct tar_sparse_file *file) - sparse_add_map (file->stat_info, &sp); - } - set_next_block_after (blk); -+ -+ file->dumped_size += BLOCKSIZE * (current_block_ordinal () - start); - } - - return true; -diff --git a/tests/Makefile.am b/tests/Makefile.am -index 2d7939d..ac3b6e7 100644 ---- a/tests/Makefile.am -+++ b/tests/Makefile.am -@@ -1,6 +1,6 @@ - # Makefile for GNU tar regression tests. - --# Copyright 1996-1997, 1999-2001, 2003-2007, 2009, 2012-2015 Free Software -+# Copyright 1996-1997, 1999-2001, 2003-2007, 2009, 2012-2018 Free Software - - # This file is part of GNU tar. - -@@ -228,6 +228,9 @@ TESTSUITE_AT = \ - spmvp00.at\ - spmvp01.at\ - spmvp10.at\ -+ sptrcreat.at\ -+ sptrdiff00.at\ -+ sptrdiff01.at\ - time01.at\ - time02.at\ - truncate.at\ -diff --git a/tests/sptrcreat.at b/tests/sptrcreat.at -new file mode 100644 -index 0000000..8e28f0e ---- /dev/null -+++ b/tests/sptrcreat.at -@@ -0,0 +1,62 @@ -+# Process this file with autom4te to create testsuite. -*- Autotest -*- -+ -+# Test suite for GNU tar. -+# Copyright 2018 Free Software Foundation, Inc. -+ -+# This file is part of GNU tar. -+ -+# GNU tar is free software; you can redistribute it and/or modify -+# it under the terms of the GNU General Public License as published by -+# the Free Software Foundation; either version 3 of the License, or -+# (at your option) any later version. -+ -+# GNU tar is distributed in the hope that it will be useful, -+# but WITHOUT ANY WARRANTY; without even the implied warranty of -+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+# GNU General Public License for more details. -+ -+# You should have received a copy of the GNU General Public License -+# along with this program. If not, see . -+ -+# Tar up to 1.30 would loop endlessly if a sparse file had been truncated -+# while being archived (with --sparse flag). -+# -+# The bug has been assigned id CVE-2018-20482 (on the grounds that it is a -+# denial of service possibility). -+# -+# Reported by: Chris Siebenmann -+# References: <20181226223948.781EB32008E@apps1.cs.toronto.edu>, -+# -+# -+# -+ -+AT_SETUP([sparse file truncated while archiving]) -+AT_KEYWORDS([truncate filechange sparse sptr sptrcreat]) -+ -+AT_TAR_CHECK([ -+genfile --sparse --block-size=1024 --file foo \ -+ 0 ABCDEFGHIJ 1M ABCDEFGHIJ 10M ABCDEFGHIJ 200M ABCDEFGHIJ -+genfile --file baz -+genfile --run --checkpoint 3 --length 200m --truncate foo -- \ -+ tar --checkpoint=1 \ -+ --checkpoint-action=echo \ -+ --checkpoint-action=sleep=1 \ -+ --sparse -vcf bar foo baz -+echo Exit status: $? -+echo separator -+genfile --file foo --seek 200m --length 11575296 --pattern=zeros -+tar dvf bar], -+[1], -+[foo -+baz -+Exit status: 1 -+separator -+foo -+foo: Mod time differs -+baz -+], -+[tar: foo: File shrank by 11575296 bytes; padding with zeros -+], -+[],[],[posix, gnu, oldgnu]) -+ -+AT_CLEANUP -diff --git a/tests/sptrdiff00.at b/tests/sptrdiff00.at -new file mode 100644 -index 0000000..c410561 ---- /dev/null -+++ b/tests/sptrdiff00.at -@@ -0,0 +1,55 @@ -+# Process this file with autom4te to create testsuite. -*- Autotest -*- -+# -+# Test suite for GNU tar. -+# Copyright 2018 Free Software Foundation, Inc. -+# -+# This file is part of GNU tar. -+# -+# GNU tar is free software; you can redistribute it and/or modify -+# it under the terms of the GNU General Public License as published by -+# the Free Software Foundation; either version 3 of the License, or -+# (at your option) any later version. -+# -+# GNU tar is distributed in the hope that it will be useful, -+# but WITHOUT ANY WARRANTY; without even the implied warranty of -+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+# GNU General Public License for more details. -+# -+# You should have received a copy of the GNU General Public License -+# along with this program. If not, see . -+ -+# While fixing CVE-2018-20482 (see sptrcreat.at) it has been discovered -+# that similar bug exists in file checking code (tar d). -+# This test case checks if tar correctly handles a short read condition -+# appearing in check_sparse_region. -+ -+AT_SETUP([file truncated in sparse region while comparing]) -+AT_KEYWORDS([truncate filechange sparse sptr sptrdiff diff]) -+ -+# This triggers short read in check_sparse_region. -+AT_TAR_CHECK([ -+genfile --sparse --block-size=1024 --file foo \ -+ 0 ABCDEFGHIJ 1M ABCDEFGHIJ 10M ABCDEFGHIJ 200M ABCDEFGHIJ -+genfile --file baz -+echo creating -+tar --sparse -vcf bar foo baz -+echo comparing -+genfile --run --checkpoint 3 --length 200m --truncate foo -- \ -+ tar --checkpoint=1 \ -+ --checkpoint-action=echo='Write checkpoint %u' \ -+ --checkpoint-action=sleep=1 \ -+ --sparse -vdf bar -+], -+[1], -+[creating -+foo -+baz -+comparing -+foo -+foo: Size differs -+baz -+], -+[], -+[],[],[posix, gnu, oldgnu]) -+ -+AT_CLEANUP -diff --git a/tests/sptrdiff01.at b/tests/sptrdiff01.at -new file mode 100644 -index 0000000..2da2267 ---- /dev/null -+++ b/tests/sptrdiff01.at -@@ -0,0 +1,55 @@ -+# Process this file with autom4te to create testsuite. -*- Autotest -*- -+# -+# Test suite for GNU tar. -+# Copyright 2018 Free Software Foundation, Inc. -+# -+# This file is part of GNU tar. -+# -+# GNU tar is free software; you can redistribute it and/or modify -+# it under the terms of the GNU General Public License as published by -+# the Free Software Foundation; either version 3 of the License, or -+# (at your option) any later version. -+# -+# GNU tar is distributed in the hope that it will be useful, -+# but WITHOUT ANY WARRANTY; without even the implied warranty of -+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+# GNU General Public License for more details. -+# -+# You should have received a copy of the GNU General Public License -+# along with this program. If not, see . -+ -+# While fixing CVE-2018-20482 (see sptrcreat.at) it has been discovered -+# that similar bug exists in file checking code (tar d). -+# This test case checks if tar correctly handles a short read condition -+# appearing in check_data_region. -+ -+AT_SETUP([file truncated in data region while comparing]) -+AT_KEYWORDS([truncate filechange sparse sptr sptrdiff diff]) -+ -+# This triggers short read in check_data_region. -+AT_TAR_CHECK([ -+genfile --sparse --block-size=1024 --file foo \ -+ 0 ABCDEFGHIJ 1M ABCDEFGHIJ 10M ABCDEFGHIJ 200M ABCDEFGHIJ -+genfile --file baz -+echo creating -+tar --sparse -vcf bar foo baz -+echo comparing -+genfile --run --checkpoint 5 --length 221278210 --truncate foo -- \ -+ tar --checkpoint=1 \ -+ --checkpoint-action=echo='Write checkpoint %u' \ -+ --checkpoint-action=sleep=1 \ -+ --sparse -vdf bar -+], -+[1], -+[creating -+foo -+baz -+comparing -+foo -+foo: Size differs -+baz -+], -+[], -+[],[],[posix, gnu, oldgnu]) -+ -+AT_CLEANUP -diff --git a/tests/testsuite.at b/tests/testsuite.at -index 2a83757..23386f7 100644 ---- a/tests/testsuite.at -+++ b/tests/testsuite.at -@@ -1,7 +1,7 @@ - # Process this file with autom4te to create testsuite. -*- Autotest -*- - - # Test suite for GNU tar. --# Copyright 2004-2008, 2010-2017 Free Software Foundation, Inc. -+# Copyright 2004-2008, 2010-2018 Free Software Foundation, Inc. - - # This file is part of GNU tar. - -@@ -405,6 +405,9 @@ m4_include([sparsemv.at]) - m4_include([spmvp00.at]) - m4_include([spmvp01.at]) - m4_include([spmvp10.at]) -+m4_include([sptrcreat.at]) -+m4_include([sptrdiff00.at]) -+m4_include([sptrdiff01.at]) - - AT_BANNER([Updates]) - m4_include([update.at]) --- -2.19.1 - diff --git a/Fix-buffer-overflow.patch b/Fix-buffer-overflow.patch deleted file mode 100644 index 0b5486ec89c8505b1e508bbff8006c81ae9aa3e3..0000000000000000000000000000000000000000 --- a/Fix-buffer-overflow.patch +++ /dev/null @@ -1,111 +0,0 @@ -From c7c59b57faa7bd60063f38d3517a8ad50fe1c430 Mon Sep 17 00:00:00 2001 -From: Sergey Poznyakoff -Date: Thu, 20 Dec 2018 20:30:58 +0200 -Subject: [PATCH 33/58] 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 ---- - src/xheader.c | 70 ++++++++++++++++++++++++++++----------------------- - 1 file changed, 39 insertions(+), 31 deletions(-) - -diff --git a/src/xheader.c b/src/xheader.c -index 6d97131..980f050 100644 ---- a/src/xheader.c -+++ b/src/xheader.c -@@ -255,7 +255,7 @@ char * - xheader_format_name (struct tar_stat_info *st, const char *fmt, size_t n) - { - char *buf; -- size_t len = strlen (fmt); -+ size_t len; - char *q; - const char *p; - char *dirp = NULL; -@@ -266,43 +266,51 @@ xheader_format_name (struct tar_stat_info *st, const char *fmt, size_t n) - char nbuf[UINTMAX_STRSIZE_BOUND]; - char const *nptr = NULL; - -- for (p = fmt; *p && (p = strchr (p, '%')); ) -+ len = 0; -+ for (p = fmt; *p; p++) - { -- switch (p[1]) -+ if (*p == '%' && p[1]) - { -- case '%': -- len--; -- break; -- -- case 'd': -- if (st) -+ switch (*++p) - { -- if (!dirp) -- dirp = dir_name (st->orig_file_name); -- dir = safer_name_suffix (dirp, false, absolute_names_option); -- len += strlen (dir) - 2; -- } -- break; -+ case '%': -+ len++; -+ break; - -- case 'f': -- if (st) -- { -- base = last_component (st->orig_file_name); -- len += strlen (base) - 2; -- } -- break; -+ case 'd': -+ if (st) -+ { -+ if (!dirp) -+ dirp = dir_name (st->orig_file_name); -+ dir = safer_name_suffix (dirp, false, absolute_names_option); -+ len += strlen (dir); -+ } -+ break; - -- case 'p': -- pptr = umaxtostr (getpid (), pidbuf); -- len += pidbuf + sizeof pidbuf - 1 - pptr - 2; -- break; -+ case 'f': -+ if (st) -+ { -+ base = last_component (st->orig_file_name); -+ len += strlen (base); -+ } -+ break; - -- case 'n': -- nptr = umaxtostr (n, nbuf); -- len += nbuf + sizeof nbuf - 1 - nptr - 2; -- break; -+ case 'p': -+ pptr = umaxtostr (getpid (), pidbuf); -+ len += pidbuf + sizeof pidbuf - 1 - pptr; -+ break; -+ -+ case 'n': -+ nptr = umaxtostr (n, nbuf); -+ len += nbuf + sizeof nbuf - 1 - nptr; -+ break; -+ -+ default: -+ len += 2; -+ } - } -- p++; -+ else -+ len++; - } - - buf = xmalloc (len + 1); --- -2.19.1 - diff --git a/Fix-build-on-AIX.patch b/Fix-build-on-AIX.patch deleted file mode 100644 index e7241c2281bffdd23d3a9abc404ddd0356ef8975..0000000000000000000000000000000000000000 --- a/Fix-build-on-AIX.patch +++ /dev/null @@ -1,28 +0,0 @@ -From bd1b0fc97c95686175057a203c7a1cf7b79cb19b Mon Sep 17 00:00:00 2001 -From: Sergey Poznyakoff -Date: Tue, 15 Jan 2019 15:21:03 +0200 -Subject: [PATCH 55/58] Fix build on AIX - -* src/unlink.c (flush_deferred_unlinks): Avoid possible duplicate case -(if ENOTEMPTY==EEXIST) ---- - src/unlink.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/src/unlink.c b/src/unlink.c -index 8f3a8a4..5a72f70 100644 ---- a/src/unlink.c -+++ b/src/unlink.c -@@ -127,7 +127,9 @@ flush_deferred_unlinks (bool force) - case EEXIST: - /* OpenSolaris >=10 sets EEXIST instead of ENOTEMPTY - if trying to remove a non-empty directory */ -+#if defined ENOTEMPTY && ENOTEMPTY != EEXIST - case ENOTEMPTY: -+#endif - /* Keep the record in list, in the hope we'll - be able to remove it later */ - prev = p; --- -2.19.1 - diff --git a/Fix-compilation-without-iconv.patch b/Fix-compilation-without-iconv.patch deleted file mode 100644 index b8e7ebab6edd8a366c9c99debfc2033d17d60459..0000000000000000000000000000000000000000 --- a/Fix-compilation-without-iconv.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 2f5a57be4bcb4b6e641457ef0fc99bdbe84828ba Mon Sep 17 00:00:00 2001 -From: Sergey Poznyakoff -Date: Mon, 14 Jan 2019 14:46:43 +0200 -Subject: [PATCH 50/58] Fix compilation without iconv. - ---- - src/utf8.c | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/src/utf8.c b/src/utf8.c -index 91476aa..53a1ab2 100644 ---- a/src/utf8.c -+++ b/src/utf8.c -@@ -35,11 +35,14 @@ - # define iconv_open(tocode, fromcode) ((iconv_t) -1) - - # undef iconv --# define iconv(cd, inbuf, inbytesleft, outbuf, outbytesleft) ((size_t) 0) -+# define iconv(cd, inbuf, inbytesleft, outbuf, outbytesleft) (errno = ENOSYS, (size_t) -1) - - # undef iconv_close - # define iconv_close(cd) 0 - -+# undef iconv_t -+# define iconv_t int -+ - #endif - - --- -2.19.1 - diff --git a/Fix-double-free-introduced-by-577dc345.patch b/Fix-double-free-introduced-by-577dc345.patch deleted file mode 100644 index 7ca76d670362127fdbbf1f0082c39f2e8e37964d..0000000000000000000000000000000000000000 --- a/Fix-double-free-introduced-by-577dc345.patch +++ /dev/null @@ -1,44 +0,0 @@ -From 110e3bd7a6e63e0c5c734d97a0a44ed5c1b6de7c Mon Sep 17 00:00:00 2001 -From: Sergey Poznyakoff -Date: Tue, 31 Jul 2018 15:57:11 +0300 -Subject: [PATCH 22/58] Fix double-free introduced by 577dc345 - -* src/utf8.c (utf8_convert): Don't store freed value in *output ---- - src/utf8.c | 7 ++++--- - 1 file changed, 4 insertions(+), 3 deletions(-) - -diff --git a/src/utf8.c b/src/utf8.c -index 168d636..abf26bc 100644 ---- a/src/utf8.c -+++ b/src/utf8.c -@@ -65,7 +65,7 @@ bool - utf8_convert (bool to_utf, char const *input, char **output) - { - char ICONV_CONST *ib; -- char *ob; -+ char *ob, *ret; - size_t inlen; - size_t outlen; - iconv_t cd = utf8_init (to_utf); -@@ -80,14 +80,15 @@ utf8_convert (bool to_utf, char const *input, char **output) - - inlen = strlen (input) + 1; - outlen = inlen * MB_LEN_MAX + 1; -- ob = *output = xmalloc (outlen); -+ ob = ret = xmalloc (outlen); - ib = (char ICONV_CONST *) input; - if (iconv (cd, &ib, &inlen, &ob, &outlen) == -1) - { -- free (*output); -+ free (ret); - return false; - } - *ob = 0; -+ *output = ret; - return true; - } - --- -2.19.1 - diff --git a/Fix-error-handling-when-reading-incremental-snapshot.patch b/Fix-error-handling-when-reading-incremental-snapshot.patch deleted file mode 100644 index 3d56b7d015b809e82b6d8525c04593966e09e1f5..0000000000000000000000000000000000000000 --- a/Fix-error-handling-when-reading-incremental-snapshot.patch +++ /dev/null @@ -1,84 +0,0 @@ -From 916fe62ae9b91a5d71cfa752f7cad89a558d7672 Mon Sep 17 00:00:00 2001 -From: Sergey Poznyakoff -Date: Fri, 21 Dec 2018 07:59:02 +0200 -Subject: [PATCH 35/58] 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. ---- - src/incremen.c | 30 +++++++++++++++--------------- - 1 file changed, 15 insertions(+), 15 deletions(-) - -diff --git a/src/incremen.c b/src/incremen.c -index 7c26eb8..8335a0c 100644 ---- a/src/incremen.c -+++ b/src/incremen.c -@@ -998,10 +998,10 @@ read_incr_db_01 (int version, const char *initbuf) - newer_mtime_option = decode_timespec (buf, &ebuf, false); - - if (! valid_timespec (newer_mtime_option)) -- ERROR ((0, errno, "%s:%ld: %s", -- quotearg_colon (listed_incremental_option), -- lineno, -- _("Invalid time stamp"))); -+ FATAL_ERROR ((0, errno, "%s:%ld: %s", -+ quotearg_colon (listed_incremental_option), -+ lineno, -+ _("Invalid time stamp"))); - else - { - if (version == 1 && *ebuf) -@@ -1043,9 +1043,9 @@ read_incr_db_01 (int version, const char *initbuf) - mtime = decode_timespec (strp, &ebuf, false); - strp = ebuf; - if (!valid_timespec (mtime) || *strp != ' ') -- ERROR ((0, errno, "%s:%ld: %s", -- quotearg_colon (listed_incremental_option), lineno, -- _("Invalid modification time"))); -+ FATAL_ERROR ((0, errno, "%s:%ld: %s", -+ quotearg_colon (listed_incremental_option), lineno, -+ _("Invalid modification time"))); - - errno = 0; - u = strtoumax (strp, &ebuf, 10); -@@ -1053,9 +1053,9 @@ read_incr_db_01 (int version, const char *initbuf) - errno = ERANGE; - if (errno || strp == ebuf || *ebuf != ' ') - { -- ERROR ((0, errno, "%s:%ld: %s", -- quotearg_colon (listed_incremental_option), lineno, -- _("Invalid modification time (nanoseconds)"))); -+ FATAL_ERROR ((0, errno, "%s:%ld: %s", -+ quotearg_colon (listed_incremental_option), lineno, -+ _("Invalid modification time (nanoseconds)"))); - mtime.tv_nsec = -1; - } - else -@@ -1069,17 +1069,17 @@ read_incr_db_01 (int version, const char *initbuf) - TYPE_MINIMUM (dev_t), TYPE_MAXIMUM (dev_t)); - strp = ebuf; - if (errno || *strp != ' ') -- ERROR ((0, errno, "%s:%ld: %s", -+ FATAL_ERROR ((0, errno, "%s:%ld: %s", - quotearg_colon (listed_incremental_option), lineno, -- _("Invalid device number"))); -+ _("Invalid device number"))); - - ino = strtosysint (strp, &ebuf, - TYPE_MINIMUM (ino_t), TYPE_MAXIMUM (ino_t)); - strp = ebuf; - if (errno || *strp != ' ') -- ERROR ((0, errno, "%s:%ld: %s", -- quotearg_colon (listed_incremental_option), lineno, -- _("Invalid inode number"))); -+ FATAL_ERROR ((0, errno, "%s:%ld: %s", -+ quotearg_colon (listed_incremental_option), lineno, -+ _("Invalid inode number"))); - - strp++; - unquote_string (strp); --- -2.19.1 - diff --git a/Fix-iconv-usage.patch b/Fix-iconv-usage.patch deleted file mode 100644 index 8f385767b92b6d178b6244d48c9784d71c7bf9ba..0000000000000000000000000000000000000000 --- a/Fix-iconv-usage.patch +++ /dev/null @@ -1,39 +0,0 @@ -From 3da8c2850d6589b9fa387ab2a2c87355d1224b1e Mon Sep 17 00:00:00 2001 -From: Sergey Poznyakoff -Date: Mon, 14 Jan 2019 13:59:39 +0200 -Subject: [PATCH 49/58] Fix iconv usage. - -Patch by Christian Weisgerber. - -* src/utf8.c (utf8_convert): non-zero return from iconv means failure. ---- - src/utf8.c | 13 ++++++++++++- - 1 file changed, 12 insertions(+), 1 deletion(-) - -diff --git a/src/utf8.c b/src/utf8.c -index 95a016d..91476aa 100644 ---- a/src/utf8.c -+++ b/src/utf8.c -@@ -81,7 +81,18 @@ utf8_convert (bool to_utf, char const *input, char **output) - outlen = inlen * MB_LEN_MAX + 1; - ob = ret = xmalloc (outlen); - ib = (char ICONV_CONST *) input; -- if (iconv (cd, &ib, &inlen, &ob, &outlen) == -1) -+ /* According to POSIX, "if iconv() encounters a character in the input -+ buffer that is valid, but for which an identical character does not -+ exist in the target codeset, iconv() shall perform an -+ implementation-defined conversion on this character." It will "update -+ the variables pointed to by the arguments to reflect the extent of the -+ conversion and return the number of non-identical conversions performed". -+ On error, it returns -1. -+ In other words, non-zero return always indicates failure, either because -+ the input was not fully converted, or because it was converted in a -+ non-reversible way. -+ */ -+ if (iconv (cd, &ib, &inlen, &ob, &outlen) != 0) - { - free (ret); - return false; --- -2.19.1 - diff --git a/Fix-improper-memory-access.patch b/Fix-improper-memory-access.patch deleted file mode 100644 index 30b8feb44014019ba16bc52252e71bc1a23976ce..0000000000000000000000000000000000000000 --- a/Fix-improper-memory-access.patch +++ /dev/null @@ -1,30 +0,0 @@ -From eae48289c0848c5812644f20dbb1b39fb117a8f6 Mon Sep 17 00:00:00 2001 -From: Sergey Poznyakoff -Date: Thu, 20 Dec 2018 17:53:40 +0200 -Subject: [PATCH 32/58] 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. ---- - src/transform.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/transform.c b/src/transform.c -index 6ef0da6..bbf2033 100644 ---- a/src/transform.c -+++ b/src/transform.c -@@ -273,7 +273,7 @@ parse_transform_expr (const char *expr) - USAGE_ERROR ((0, 0, _("Invalid transform expression: %s"), errbuf)); - } - -- if (str[0] == '^' || str[strlen (str) - 1] == '$') -+ if (str[0] == '^' || (i > 2 && str[i - 3] == '$')) - tf->transform_type = transform_first; - - free (str); --- -2.19.1 - diff --git a/Fix-possible-NULL-dereference-savannah-bug-55369.patch b/Fix-possible-NULL-dereference-savannah-bug-55369.patch deleted file mode 100644 index f34c672e2006bf12ef3f2d682932e73eda9df9e4..0000000000000000000000000000000000000000 --- a/Fix-possible-NULL-dereference-savannah-bug-55369.patch +++ /dev/null @@ -1,35 +0,0 @@ -From cb07844454d8cc9fb21f53ace75975f91185a120 Mon Sep 17 00:00:00 2001 -From: Sergey Poznyakoff -Date: Mon, 14 Jan 2019 15:22:09 +0200 -Subject: [PATCH] Fix possible NULL dereference (savannah bug #55369) - -* src/sparse.c (pax_decode_header): Check return from find_next_block. ---- - src/sparse.c | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/src/sparse.c b/src/sparse.c -index 55c874f..6ec069d 100644 ---- a/src/sparse.c -+++ b/src/sparse.c -@@ -1247,6 +1247,8 @@ pax_decode_header (struct tar_sparse_file *file) - set_next_block_after (b); \ - file->dumped_size += BLOCKSIZE; \ - b = find_next_block (); \ -+ if (!b) \ -+ FATAL_ERROR ((0, 0, _("Unexpected EOF in archive"))); \ - src = b->buffer; \ - endp = b->buffer + BLOCKSIZE; \ - } \ -@@ -1259,6 +1261,8 @@ pax_decode_header (struct tar_sparse_file *file) - set_next_block_after (current_header); - file->dumped_size += BLOCKSIZE; - blk = find_next_block (); -+ if (!blk) -+ FATAL_ERROR ((0, 0, _("Unexpected EOF in archive"))); - p = blk->buffer; - COPY_BUF (blk,nbuf,p); - if (!decode_num (&u, nbuf, TYPE_MAXIMUM (size_t))) --- -1.8.3.1 - diff --git a/Fix-semantics-of-K-used-together-with-explicit-membe.patch b/Fix-semantics-of-K-used-together-with-explicit-membe.patch deleted file mode 100644 index e08044ce9f41a904612c9877a95310f372b4c745..0000000000000000000000000000000000000000 --- a/Fix-semantics-of-K-used-together-with-explicit-membe.patch +++ /dev/null @@ -1,130 +0,0 @@ -From 983a82a3767da04cb3ca15eefe2e4b21154c335f Mon Sep 17 00:00:00 2001 -From: Sergey Poznyakoff -Date: Fri, 21 Dec 2018 13:24:29 +0200 -Subject: [PATCH 36/58] 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. ---- - NEWS | 12 +++++++++++- - src/common.h | 5 +++++ - src/names.c | 45 ++++++++++++++++++++++++++++++++++++++------- - src/tar.c | 3 +-- - 4 files changed, 55 insertions(+), 10 deletions(-) - -diff --git a/src/common.h b/src/common.h -index 2877975..32e6f8b 100644 ---- a/src/common.h -+++ b/src/common.h -@@ -302,6 +302,10 @@ enum hole_detection_method - - GLOBAL enum hole_detection_method hole_detection; - -+/* The first entry in names.c:namelist specifies the member name to -+ start extracting from. Set by add_starting_file() upon seeing the -+ -K option. -+*/ - GLOBAL bool starting_file_option; - - /* Specified maximum byte length of each tape volume (multiple of 1024). */ -@@ -752,6 +756,7 @@ const char *name_next (int change_dirs); - void name_gather (void); - struct name *addname (char const *string, int change_dir, - bool cmdline, struct name *parent); -+void add_starting_file (char const *file_name); - void remname (struct name *name); - bool name_match (const char *name); - void names_notfound (void); -diff --git a/src/names.c b/src/names.c -index f4dc978..d3728d8 100644 ---- a/src/names.c -+++ b/src/names.c -@@ -1227,6 +1227,34 @@ addname (char const *string, int change_dir, bool cmdline, struct name *parent) - return name; - } - -+void -+add_starting_file (char const *file_name) -+{ -+ struct name *name = make_name (file_name); -+ -+ if (starting_file_option) -+ { -+ struct name *head = namelist; -+ remname (head); -+ free_name (head); -+ } -+ -+ name->prev = NULL; -+ name->next = namelist; -+ namelist = name; -+ if (!nametail) -+ nametail = namelist; -+ -+ name->found_count = 0; -+ name->matching_flags = INCLUDE_OPTIONS; -+ name->change_dir = 0; -+ name->directory = NULL; -+ name->parent = NULL; -+ name->cmdline = true; -+ -+ starting_file_option = true; -+} -+ - /* Find a match for FILE_NAME (whose string length is LENGTH) in the name - list. */ - static struct name * -@@ -1283,19 +1311,22 @@ name_match (const char *file_name) - } - - cursor = namelist_match (file_name, length); -+ if (starting_file_option) -+ { -+ /* If starting_file_option is set, the head of the list is the name -+ of the member to start extraction from. Skip the match unless it -+ is head. */ -+ if (cursor == namelist) -+ starting_file_option = false; -+ else -+ cursor = NULL; -+ } - if (cursor) - { - if (!(ISSLASH (file_name[cursor->length]) && recursion_option) - || cursor->found_count == 0) - cursor->found_count++; /* remember it matched */ -- if (starting_file_option) -- { -- free (namelist); -- namelist = NULL; -- nametail = NULL; -- } - chdir_do (cursor->change_dir); -- - /* We got a match. */ - return ISFOUND (cursor); - } -diff --git a/src/tar.c b/src/tar.c -index 1993887..9919e87 100644 ---- a/src/tar.c -+++ b/src/tar.c -@@ -1443,8 +1443,7 @@ parse_opt (int key, char *arg, struct argp_state *state) - - case 'K': - optloc_save (OC_STARTING_FILE, args->loc); -- starting_file_option = true; -- addname (arg, 0, true, NULL); -+ add_starting_file (arg); - break; - - case ONE_FILE_SYSTEM_OPTION: --- -2.19.1 - diff --git a/Reject-pax-options-starting-with-equals-sign.patch b/Reject-pax-options-starting-with-equals-sign.patch deleted file mode 100644 index 7bee095e45972c531085946ec81651b9d72f113a..0000000000000000000000000000000000000000 --- a/Reject-pax-options-starting-with-equals-sign.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 99d415e1902c2309a4a3da41b2f08e5719771336 Mon Sep 17 00:00:00 2001 -From: Sergey Poznyakoff -Date: Fri, 21 Dec 2018 07:32:47 +0200 -Subject: [PATCH 34/58] 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 = ---- - src/xheader.c | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/src/xheader.c b/src/xheader.c -index 980f050..e938502 100644 ---- a/src/xheader.c -+++ b/src/xheader.c -@@ -185,6 +185,9 @@ xheader_set_keyword_equal (char *kw, char *eq) - bool global = true; - char *p = eq; - -+ if (eq == kw) -+ USAGE_ERROR ((0, 0, _("Malformed pax option: %s"), quote (kw))); -+ - if (eq[-1] == ':') - { - p--; --- -2.19.1 - diff --git a/Remove-erroneous-abort-call.patch b/Remove-erroneous-abort-call.patch deleted file mode 100644 index 30cd7b276266e2f44afc1c302c4615ef270f5c4f..0000000000000000000000000000000000000000 --- a/Remove-erroneous-abort-call.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 85c005ee1345c342f707f3c55317daf6cb050603 Mon Sep 17 00:00:00 2001 -From: Sergey Poznyakoff -Date: Thu, 10 Jan 2019 18:18:49 +0200 -Subject: [PATCH 44/58] 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(). ---- - src/extract.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/extract.c b/src/extract.c -index 090b866..8276f8f 100644 ---- a/src/extract.c -+++ b/src/extract.c -@@ -787,7 +787,7 @@ maybe_recoverable (char *file_name, bool regular, bool *interdir_made) - case UNLINK_FIRST_OLD_FILES: - break; - } -- abort (); /* notreached */ -+ FALLTHROUGH; - - case ENOENT: - /* Attempt creating missing intermediate directories. */ --- -2.19.1 - diff --git a/Report-race-on-systems-without-O_DIRECTORY.patch b/Report-race-on-systems-without-O_DIRECTORY.patch deleted file mode 100644 index 38e3af5ad13432c2b586d155a8c16606835215d0..0000000000000000000000000000000000000000 --- a/Report-race-on-systems-without-O_DIRECTORY.patch +++ /dev/null @@ -1,30 +0,0 @@ -From c1b569d9d61f129d2eefd1e87e6ea6cd96810788 Mon Sep 17 00:00:00 2001 -From: Pavel Raiskup -Date: Tue, 31 Jul 2018 12:13:48 +0300 -Subject: [PATCH 21/58] Report race on systems without O_DIRECTORY - -* src/names.c (collect_and_sort_names): Report ENOTDIR after -successful fstat() but !S_ISDIR. ---- - src/names.c | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/src/names.c b/src/names.c -index f6ad9fe..f4dc978 100644 ---- a/src/names.c -+++ b/src/names.c -@@ -1767,6 +1767,11 @@ collect_and_sort_names (void) - name->found_count++; - add_hierarchy_to_namelist (&st, name); - } -+ else -+ { -+ errno = ENOTDIR; -+ open_diag (name->name); -+ } - } - } - --- -2.19.1 - diff --git a/Rewrite-struct-tm-formatting.patch b/Rewrite-struct-tm-formatting.patch deleted file mode 100644 index 3b19833a4a55d3dd00afde3864af3e450cec0ce2..0000000000000000000000000000000000000000 --- a/Rewrite-struct-tm-formatting.patch +++ /dev/null @@ -1,45 +0,0 @@ -From 2d00d8b32190ca7135673999b175850019746042 Mon Sep 17 00:00:00 2001 -From: Sergey Poznyakoff -Date: Sat, 7 Apr 2018 10:33:27 +0300 -Subject: [PATCH 10/58] 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. ---- - src/list.c | 10 +++------- - 1 file changed, 3 insertions(+), 7 deletions(-) - -diff --git a/src/list.c b/src/list.c -index 14388a5..2cc5d40 100644 ---- a/src/list.c -+++ b/src/list.c -@@ -23,7 +23,7 @@ - #include - #include - #include -- -+#include - #include "common.h" - - union block *current_header; /* points to current archive header */ -@@ -1049,15 +1049,11 @@ tartime (struct timespec t, bool full_time) - { - if (full_time) - { -- sprintf (buffer, "%04ld-%02d-%02d %02d:%02d:%02d", -- tm->tm_year + 1900L, tm->tm_mon + 1, tm->tm_mday, -- tm->tm_hour, tm->tm_min, tm->tm_sec); -+ strftime (buffer, sizeof buffer, "%Y-%m-%d %H:%M:%S", tm); - code_ns_fraction (ns, buffer + strlen (buffer)); - } - else -- sprintf (buffer, "%04ld-%02d-%02d %02d:%02d", -- tm->tm_year + 1900L, tm->tm_mon + 1, tm->tm_mday, -- tm->tm_hour, tm->tm_min); -+ strftime (buffer, sizeof buffer, "%Y-%m-%d %H:%M", tm); - return buffer; - } - --- -2.19.1 - diff --git a/Work-over-a-bug-in-gnulib-error.patch b/Work-over-a-bug-in-gnulib-error.patch deleted file mode 100644 index 07e8246bbd1a98882a3239345e72899a83ee4827..0000000000000000000000000000000000000000 --- a/Work-over-a-bug-in-gnulib-error.patch +++ /dev/null @@ -1,94 +0,0 @@ -From 9d1993f651d72f78b2afe416c72b1aeb0c1215ab Mon Sep 17 00:00:00 2001 -From: Sergey Poznyakoff -Date: Fri, 28 Dec 2018 17:49:08 +0200 -Subject: [PATCH 41/58] 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. ---- - configure.ac | 12 ++++++++++++ - src/tar.c | 27 +++++++++++++++++++++++++-- - 2 files changed, 37 insertions(+), 2 deletions(-) - -diff --git a/configure.ac b/configure.ac -index 66ed8ca..8e4207b 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -102,6 +102,18 @@ gt_TYPE_SSIZE_T - - # gnulib modules - gl_INIT -+ -+if test $ac_cv_lib_error_at_line = no; then -+ # This means that the error() function is not present in libc, so -+ # the one from gnulib will be used instead. This function precedes -+ # error messages it prints with the program name as returned by getprogname() -+ # call, instead of using the name set by set_program_name. -+ # Install workaround. -+ AC_DEFINE([ENABLE_ERROR_PRINT_PROGNAME],[1], -+ [Enable the use of error_print_progname to print program name with error messages. -+ See comment to function tar_print_progname in src/tar.c]) -+fi -+ - # paxutils modules - tar_PAXUTILS - -diff --git a/src/tar.c b/src/tar.c -index 9c939f3..721d777 100644 ---- a/src/tar.c -+++ b/src/tar.c -@@ -2666,7 +2666,28 @@ decode_options (int argc, char **argv) - - report_textual_dates (&args); - } -- -+ -+#ifdef ENABLE_ERROR_PRINT_PROGNAME -+/* 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. -+ -+ To avoid this, on such systems the following helper function is used -+ to print proper program name. Its address is assigned to the -+ error_print_progname variable, which error() then uses instead of -+ printing getprogname() result. -+ */ -+static void -+tar_print_progname (void) -+{ -+ fprintf (stderr, "%s: ", program_name); -+} -+#endif - - /* Tar proper. */ - -@@ -2676,7 +2697,9 @@ main (int argc, char **argv) - { - set_start_time (); - set_program_name (argv[0]); -- -+#ifdef ENABLE_ERROR_PRINT_PROGNAME -+ error_print_progname = tar_print_progname; -+#endif - setlocale (LC_ALL, ""); - bindtextdomain (PACKAGE, LOCALEDIR); - textdomain (PACKAGE); --- -2.19.1 - diff --git a/maint-avoid-Wstringop-truncation-warnings-from-upcom.patch b/maint-avoid-Wstringop-truncation-warnings-from-upcom.patch deleted file mode 100644 index 17547741b3b8f7318d0d20779053b3dc3bec2428..0000000000000000000000000000000000000000 --- a/maint-avoid-Wstringop-truncation-warnings-from-upcom.patch +++ /dev/null @@ -1,47 +0,0 @@ -From 0a0242582f134c9994bbad77a57f64d388cf9e19 Mon Sep 17 00:00:00 2001 -From: Jim Meyering -Date: Sun, 18 Mar 2018 21:32:19 -0700 -Subject: [PATCH 13/58] 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] ---- - src/create.c | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) - -diff --git a/src/create.c b/src/create.c -index 35bcf5b..7737c52 100644 ---- a/src/create.c -+++ b/src/create.c -@@ -518,8 +518,8 @@ start_private_header (const char *name, size_t size, time_t t) - MODE_TO_CHARS (S_IFREG|S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH, header->header.mode); - UID_TO_CHARS (0, header->header.uid); - GID_TO_CHARS (0, header->header.gid); -- strncpy (header->header.magic, TMAGIC, TMAGLEN); -- strncpy (header->header.version, TVERSION, TVERSLEN); -+ memcpy (header->header.magic, TMAGIC, TMAGLEN); -+ memcpy (header->header.version, TVERSION, TVERSLEN); - return header; - } - -@@ -917,8 +917,8 @@ start_header (struct tar_stat_info *st) - - case POSIX_FORMAT: - case USTAR_FORMAT: -- strncpy (header->header.magic, TMAGIC, TMAGLEN); -- strncpy (header->header.version, TVERSION, TVERSLEN); -+ memcpy (header->header.magic, TMAGIC, TMAGLEN); -+ memcpy (header->header.version, TVERSION, TVERSLEN); - break; - - default: --- -2.19.1 - diff --git a/maint-avoid-Wstringop-truncation-warnings-upcoming-G.patch b/maint-avoid-Wstringop-truncation-warnings-upcoming-G.patch deleted file mode 100644 index a5fa821bccefe9827f2064b625bf68b4ff702d8f..0000000000000000000000000000000000000000 --- a/maint-avoid-Wstringop-truncation-warnings-upcoming-G.patch +++ /dev/null @@ -1,50 +0,0 @@ -From 2baa531ce53d5876d34f941a97b5041573da453a Mon Sep 17 00:00:00 2001 -From: Jim Meyering -Date: Sun, 18 Mar 2018 21:20:28 -0700 -Subject: [PATCH 12/58] 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] ---- - src/buffer.c | 14 +++++++++----- - 1 file changed, 9 insertions(+), 5 deletions(-) - -diff --git a/src/buffer.c b/src/buffer.c -index 063e1be..b710c6a 100644 ---- a/src/buffer.c -+++ b/src/buffer.c -@@ -1771,15 +1771,19 @@ gnu_add_multi_volume_header (struct bufmap *map) - { - int tmp; - union block *block = find_next_block (); -+ size_t len = strlen (map->file_name); - -- if (strlen (map->file_name) > NAME_FIELD_SIZE) -- WARN ((0, 0, -- _("%s: file name too long to be stored in a GNU multivolume header, truncated"), -- quotearg_colon (map->file_name))); -+ if (len > NAME_FIELD_SIZE) -+ { -+ WARN ((0, 0, -+ _("%s: file name too long to be stored in a GNU multivolume header, truncated"), -+ quotearg_colon (map->file_name))); -+ len = NAME_FIELD_SIZE; -+ } - - memset (block, 0, BLOCKSIZE); - -- strncpy (block->header.name, map->file_name, NAME_FIELD_SIZE); -+ memcpy (block->header.name, map->file_name, len); - block->header.typeflag = GNUTYPE_MULTIVOL; - - OFF_TO_CHARS (map->sizeleft, block->header.size); --- -2.19.1 - diff --git a/maint-avoid-warnings-from-upcoming-GCC8.patch b/maint-avoid-warnings-from-upcoming-GCC8.patch deleted file mode 100644 index e202c2bf34494724ba9363f8ea1cd23bbe42808b..0000000000000000000000000000000000000000 --- a/maint-avoid-warnings-from-upcoming-GCC8.patch +++ /dev/null @@ -1,43 +0,0 @@ -From ccef8581b8673cadd1c084595de4efde956c3c2b Mon Sep 17 00:00:00 2001 -From: Jim Meyering -Date: Sun, 18 Mar 2018 17:59:25 -0700 -Subject: [PATCH 11/58] 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. ---- - src/extract.c | 1 + - src/transform.c | 2 +- - 2 files changed, 2 insertions(+), 1 deletion(-) - -diff --git a/src/extract.c b/src/extract.c -index 395db55..74987bb 100644 ---- a/src/extract.c -+++ b/src/extract.c -@@ -788,6 +788,7 @@ maybe_recoverable (char *file_name, bool regular, bool *interdir_made) - case UNLINK_FIRST_OLD_FILES: - break; - } -+ abort (); /* notreached */ - - case ENOENT: - /* Attempt creating missing intermediate directories. */ -diff --git a/src/transform.c b/src/transform.c -index e450dd2..3fae3c0 100644 ---- a/src/transform.c -+++ b/src/transform.c -@@ -550,7 +550,7 @@ _single_transform_name_to_obstack (struct transform *tf, char *input) - default: - break; - } -- /*FALL THROUGH*/ -+ FALLTHROUGH; - - case ctl_upcase: - case ctl_locase: --- -2.19.1 - diff --git a/one-top-level-avoid-a-heap-buffer-overflow.patch b/one-top-level-avoid-a-heap-buffer-overflow.patch deleted file mode 100644 index 614684167b03f438b7570da103b8a5f7dcd6defc..0000000000000000000000000000000000000000 --- a/one-top-level-avoid-a-heap-buffer-overflow.patch +++ /dev/null @@ -1,73 +0,0 @@ -From b531801d6f49d64a126720e6004aae7c800764b2 Mon Sep 17 00:00:00 2001 -From: Jim Meyering -Date: Sat, 7 Apr 2018 08:41:46 -0700 -Subject: [PATCH 16/58] --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 ---- - NEWS | 7 +++++-- - src/suffix.c | 11 +++++++---- - 2 files changed, 12 insertions(+), 6 deletions(-) - -diff --git a/src/suffix.c b/src/suffix.c -index 66b5694..d787ea8 100644 ---- a/src/suffix.c -+++ b/src/suffix.c -@@ -62,7 +62,7 @@ find_compression_suffix (const char *name, size_t *ret_len) - { - size_t len; - struct compression_suffix *p; -- -+ - suf++; - len = strlen (suf); - -@@ -101,10 +101,14 @@ strip_compression_suffix (const char *name) - { - char *s = NULL; - size_t len; -+ struct compression_suffix const *p = find_compression_suffix (name, &len); - -- if (find_compression_suffix (name, &len)) -+ if (p) - { -- if (strncmp (name + len - 4, ".tar", 4) == 0) -+ /* Strip an additional ".tar" suffix, but only if the just-stripped -+ "outer" suffix did not begin with "t". */ -+ if (len > 4 && strncmp (name + len - 4, ".tar", 4) == 0 -+ && p->suffix[0] != 't') - len -= 4; - if (len == 0) - return NULL; -@@ -114,4 +118,3 @@ strip_compression_suffix (const char *name) - } - return s; - } -- --- -2.19.1 - diff --git a/tar-1.28-sparse-inf-loops.patch b/tar-1.28-sparse-inf-loops.patch deleted file mode 100644 index 94d2bb56aa06fdeb40e123381c0e33fb9f9dc910..0000000000000000000000000000000000000000 --- a/tar-1.28-sparse-inf-loops.patch +++ /dev/null @@ -1,129 +0,0 @@ -From b451bfd224da44e93cf842f23455d755e48421dd Mon Sep 17 00:00:00 2001 -From: Pavel Raiskup -Date: Mon, 28 Jul 2014 08:17:55 +0200 -Subject: [PATCH 8/9] Fix for infinite loops during sparse file handling - -Upstream bugreport (still downstream): -http://www.mail-archive.com/bug-tar@gnu.org/msg04432.html - -Resolves: #1082608 - ---- - THANKS | 1 + - src/sparse.c | 48 ++++++++++++++++++++++++++++++++---------------- - 2 files changed, 33 insertions(+), 16 deletions(-) - -diff --git a/THANKS b/THANKS -index b4c5427..e74f71c 100644 ---- a/THANKS -+++ b/THANKS -@@ -175,6 +175,7 @@ Fabio d'Alessi cars@civ.bio.unipd.it - Frank Heckenbach frank@g-n-u.de - Frank Koenen koenfr@lidp.com - Franz-Werner Gergen gergen@edvulx.mpi-stuttgart.mpg.de -+François Ouellet fouell@gmail.com - François Pinard pinard@iro.umontreal.ca - Fritz Elfert fritz@fsun.triltsch.de - George Chyu gschyu@ccgate.dp.beckman.com -diff --git a/src/sparse.c b/src/sparse.c -index 6a97676..53c1868 100644 ---- a/src/sparse.c -+++ b/src/sparse.c -@@ -301,6 +301,7 @@ sparse_dump_region (struct tar_sparse_file *file, size_t i) - { - union block *blk; - off_t bytes_left = file->stat_info->sparse_map[i].numbytes; -+ const char *file_name = file->stat_info->orig_file_name; - - if (!lseek_or_error (file, file->stat_info->sparse_map[i].offset)) - return false; -@@ -314,13 +315,23 @@ sparse_dump_region (struct tar_sparse_file *file, size_t i) - bytes_read = safe_read (file->fd, blk->buffer, bufsize); - if (bytes_read == SAFE_READ_ERROR) - { -- read_diag_details (file->stat_info->orig_file_name, -+ read_diag_details (file_name, - (file->stat_info->sparse_map[i].offset - + file->stat_info->sparse_map[i].numbytes - - bytes_left), - bufsize); - return false; - } -+ if (bytes_read == 0) -+ { -+ char buf[UINTMAX_STRSIZE_BOUND]; -+ FATAL_ERROR ((0, 0, -+ ngettext ("%s: File shrank by %s byte", -+ "%s: File shrank by %s bytes", -+ bytes_left), -+ quotearg_colon (file_name), -+ offtostr (bytes_left, buf))); -+ } - - memset (blk->buffer + bytes_read, 0, BLOCKSIZE - bytes_read); - bytes_left -= bytes_read; -@@ -475,33 +486,37 @@ sparse_skip_file (struct tar_stat_info *st) - static bool - check_sparse_region (struct tar_sparse_file *file, off_t beg, off_t end) - { -- if (!lseek_or_error (file, beg)) -+ off_t offset = beg; -+ -+ if (!lseek_or_error (file, offset)) - return false; - -- while (beg < end) -+ while (offset < end) - { - size_t bytes_read; -- size_t rdsize = BLOCKSIZE < end - beg ? BLOCKSIZE : end - beg; -+ size_t rdsize = BLOCKSIZE < end - offset ? BLOCKSIZE : end - offset; - char diff_buffer[BLOCKSIZE]; - - bytes_read = safe_read (file->fd, diff_buffer, rdsize); - if (bytes_read == SAFE_READ_ERROR) - { - read_diag_details (file->stat_info->orig_file_name, -- beg, -- rdsize); -- return false; -- } -- if (!zero_block_p (diff_buffer, bytes_read)) -- { -- char begbuf[INT_BUFSIZE_BOUND (off_t)]; -- report_difference (file->stat_info, -- _("File fragment at %s is not a hole"), -- offtostr (beg, begbuf)); -+ offset, rdsize); - return false; - } - -- beg += bytes_read; -+ if (bytes_read == 0 -+ || !zero_block_p (diff_buffer, bytes_read)) -+ { -+ char begbuf[INT_BUFSIZE_BOUND (off_t)]; -+ const char *msg = bytes_read ? _("File fragment at %s is not a hole") -+ : _("Hole starting at %s is truncated"); -+ -+ report_difference (file->stat_info, msg, offtostr (beg, begbuf)); -+ return false; -+ } -+ -+ offset += bytes_read; - } - return true; - } -@@ -542,7 +557,8 @@ check_data_region (struct tar_sparse_file *file, size_t i) - file->dumped_size += bytes_read; - size_left -= bytes_read; - mv_size_left (file->stat_info->archive_file_size - file->dumped_size); -- if (memcmp (blk->buffer, diff_buffer, rdsize)) -+ if (bytes_read == 0 -+ || memcmp (blk->buffer, diff_buffer, bytes_read)) - { - report_difference (file->stat_info, _("Contents differ")); - return false; --- -1.9.3 - diff --git a/tar-1.30-tests-difflink.patch b/tar-1.30-tests-difflink.patch deleted file mode 100644 index e4070d7e35ad72eb76b54d233843abd343c31809..0000000000000000000000000000000000000000 --- a/tar-1.30-tests-difflink.patch +++ /dev/null @@ -1,15 +0,0 @@ -Per https://www.mail-archive.com/bug-tar@gnu.org/msg05440.html - -diff --git a/tests/difflink.at b/tests/difflink.at -index eadfb08..4e01176 100644 ---- a/tests/difflink.at -+++ b/tests/difflink.at -@@ -21,7 +21,7 @@ mkdir a - genfile -f a/x - ln -s x a/y - ln a/y a/z --tar cf a.tar a -+tar cf a.tar a/x a/y a/z - rm a/z - ln -s x a/z - tar df a.tar diff --git a/tar-1.30-tests-dirrem.patch b/tar-1.30-tests-dirrem.patch deleted file mode 100644 index 6280495daf670a4db2a345c868b19ff1569f7658..0000000000000000000000000000000000000000 --- a/tar-1.30-tests-dirrem.patch +++ /dev/null @@ -1,93 +0,0 @@ -From 298cfc4743b9cca6cc0c685b9fce5b34827bec1b Mon Sep 17 00:00:00 2001 -From: Pavel Raiskup -Date: Thu, 4 Jan 2018 18:21:27 +0100 -Subject: [PATCH] tests: fix race in dirrem01 and dirrem02 - -Proposal: -https://www.mail-archive.com/bug-tar@gnu.org/msg05451.html - -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. ---- - tests/dirrem01.at | 5 +++-- - tests/dirrem02.at | 7 ++++--- - 2 files changed, 7 insertions(+), 5 deletions(-) - -diff --git a/tests/dirrem01.at b/tests/dirrem01.at -index 40344dc..dabc206 100644 ---- a/tests/dirrem01.at -+++ b/tests/dirrem01.at -@@ -47,14 +47,15 @@ gnu) CPT=3;; - esac - - genfile --run --checkpoint=$CPT --unlink dir/sub/file2 --unlink dir/sub -- \ -- tar --blocking-factor=1 --checkpoint=1 --checkpoint-action='sleep=1' \ -- --checkpoint-action='echo' -c -f archive.tar \ -+ tar --blocking-factor=1 --checkpoint=1 --checkpoint-action='echo' \ -+ --checkpoint-action='sleep=1' -c -f archive.tar \ - --listed-incremental db -v dir >/dev/null - ], - [1], - [ignore], - [tar: dir: Directory is new - tar: dir/sub: Directory is new -+tar: dir/sub: file changed as we read it - tar: dir/sub: File removed before we read it - ],[],[],[gnu,posix]) - -diff --git a/tests/dirrem02.at b/tests/dirrem02.at -index e1cf9ef..924454f 100644 ---- a/tests/dirrem02.at -+++ b/tests/dirrem02.at -@@ -20,7 +20,7 @@ - - # Description: - # --# When an explicitley named directory disappears during creation -+# When an explicitly named directory disappears during creation - # of incremental dump, tar should still exit with TAREXIT_FAILURE (2). - # - # For further details see dirrem01.at -@@ -44,14 +44,15 @@ gnu) CPT=3;; - esac - - genfile --run --checkpoint=$CPT --unlink dir/sub/file2 --unlink dir/sub -- \ -- tar --blocking-factor=1 --checkpoint=1 --checkpoint-action='sleep=1' \ -- --checkpoint-action='echo' -c -f archive.tar \ -+ tar --blocking-factor=1 --checkpoint=1 --checkpoint-action='echo' \ -+ --checkpoint-action='sleep=1' -c -f archive.tar \ - --listed-incremental db -v dir dir/sub >/dev/null - ], - [2], - [ignore], - [tar: dir: Directory is new - tar: dir/sub: Directory is new -+tar: dir/sub: file changed as we read it - tar: dir/sub: Cannot open: No such file or directory - tar: Exiting with failure status due to previous errors - ],[],[],[gnu,posix]) --- -2.14.3 - diff --git a/tar-1.30.tar.xz b/tar-1.30.tar.xz deleted file mode 100644 index 1583a84eb993cea07b3a7ad5d22cfe2c48f5c4e3..0000000000000000000000000000000000000000 Binary files a/tar-1.30.tar.xz and /dev/null differ diff --git a/tar-1.30.tar.xz.sig b/tar-1.30.tar.xz.sig deleted file mode 100644 index 3069edf287329bcfe4324812e2f000fe06d9dcf2..0000000000000000000000000000000000000000 --- a/tar-1.30.tar.xz.sig +++ /dev/null @@ -1,7 +0,0 @@ ------BEGIN PGP SIGNATURE----- -Version: GnuPG v1.4.15 (GNU/Linux) - -iEYEABECAAYFAlo2WDAACgkQNgKwf1XQxzLIAwCcCkJzqedt2FUq1N5ysPFomhvS -SnIAnj+0Y7vNI1E4w/ektRMB/HTQceeK -=TjVE ------END PGP SIGNATURE----- diff --git a/tar-1.32.tar.xz b/tar-1.32.tar.xz new file mode 100644 index 0000000000000000000000000000000000000000..46a43729ebadebbccdbf1bbfdaf05ef491d2934a Binary files /dev/null and b/tar-1.32.tar.xz differ diff --git a/tar-1.32.tar.xz.sig b/tar-1.32.tar.xz.sig new file mode 100644 index 0000000000000000000000000000000000000000..bcdd80f9211bdec6af73646e89c6519eae2737a8 --- /dev/null +++ b/tar-1.32.tar.xz.sig @@ -0,0 +1,7 @@ +-----BEGIN PGP SIGNATURE----- + +iG4EABECAC4WIQQyX2UMTCtq1YgHMno2ArB/VdDHMgUCXHFHdhAcZ3JheUBnbnUu +b3JnLnVhAAoJEDYCsH9V0Mcy61oAni2Gwnao+qzsebDfH3ePo4FWdHKEAJ9IP8h7 +f96xDOstDrfKQjY/tqUrWg== +=eh8f +-----END PGP SIGNATURE----- diff --git a/tar.spec b/tar.spec index ae99acaa6bf56b1cf71de9736ffbb12f832cfb7e..637b5035b6f493778799e062d3dce75d65d12f85 100644 --- a/tar.spec +++ b/tar.spec @@ -1,6 +1,6 @@ Name: tar -Version: 1.30 -Release: 11 +Version: 1.32 +Release: 1 Epoch: 2 Summary: An organized and systematic method of controlling a large amount of data License: GPLv3+ @@ -16,32 +16,6 @@ Patch0002: tar-1.28-vfatTruncate.patch Patch0003: tar-1.29-wildcards.patch Patch0004: tar-1.28-atime-rofs.patch Patch0005: tar-1.28-document-exclude-mistakes.patch -Patch0006: tar-1.28-sparse-inf-loops.patch -Patch0007: tar-1.30-tests-difflink.patch -Patch0008: tar-1.30-tests-dirrem.patch - -Patch0009: Rewrite-struct-tm-formatting.patch -Patch0010: maint-avoid-warnings-from-upcoming-GCC8.patch -Patch0011: maint-avoid-Wstringop-truncation-warnings-upcoming-G.patch -Patch0012: maint-avoid-Wstringop-truncation-warnings-from-upcom.patch -Patch0013: one-top-level-avoid-a-heap-buffer-overflow.patch -Patch0014: Avoid-some-resource-leaks.patch -Patch0015: Report-race-on-systems-without-O_DIRECTORY.patch -Patch0016: Fix-double-free-introduced-by-577dc345.patch -Patch0017: Fix-improper-memory-access.patch -Patch0018: Fix-buffer-overflow.patch -Patch0019: Reject-pax-options-starting-with-equals-sign.patch -Patch0020: Fix-error-handling-when-reading-incremental-snapshot.patch -Patch0021: Fix-semantics-of-K-used-together-with-explicit-membe.patch -Patch0022: Bugfix.patch -Patch0023: Disallow-modifications-to-the-global-pax-extended-he.patch -Patch0024: Work-over-a-bug-in-gnulib-error.patch -Patch0025: Remove-erroneous-abort-call.patch -Patch0026: Fix-iconv-usage.patch -Patch0027: Fix-compilation-without-iconv.patch -Patch0028: Fix-build-on-AIX.patch -Patch0029: Fix-possible-NULL-dereference-savannah-bug-55369.patch -Patch0030: Fix-CVE-2018-20482.patch %description GNU Tar provides the ability to create tar archives, as well as various other @@ -100,6 +74,9 @@ make check %{_infodir}/tar.info* %changelog +* Mon Jul 27 2020 shixuantong - 1.32-1 +- update to 1.32-1 + * Tue Feb 18 2020 openEuler Buildteam - 2:1.30-11 - Enable check