diff --git a/tar-1.23-listedincremental.patch b/tar-1.23-listedincremental.patch new file mode 100644 index 0000000..983b73b --- /dev/null +++ b/tar-1.23-listedincremental.patch @@ -0,0 +1,18 @@ +diff --git a/src/incremen.c b/src/incremen.c +index dc880cd..3da1349 100644 +--- a/src/incremen.c ++++ b/src/incremen.c +@@ -894,8 +894,11 @@ append_incremental_renames (struct directory *dir) + if (obstack_object_size (&stk) != size) + { + obstack_1grow (&stk, 0); +- dumpdir_free (dir->dump); +- dir->dump = dumpdir_create (obstack_finish (&stk)); ++ if (dir) ++ { ++ dumpdir_free (dir->dump); ++ dir->dump = dumpdir_create (obstack_finish (&stk)); ++ } + } + obstack_free (&stk, NULL); + } diff --git a/tar-1.23-longnames.patch b/tar-1.23-longnames.patch new file mode 100644 index 0000000..f7f2840 --- /dev/null +++ b/tar-1.23-longnames.patch @@ -0,0 +1,142 @@ + src/compare.c | 1 - + src/extract.c | 2 +- + src/list.c | 7 ++----- + tests/Makefile.am | 1 + + tests/exclude06.at | 47 +++++++++++++++++++++++++++++++++++++++++++++++ + tests/testsuite.at | 1 + + 6 files changed, 52 insertions(+), 7 deletions(-) + +diff --git a/src/compare.c b/src/compare.c +index f4e92da..437ffb3 100644 +--- a/src/compare.c ++++ b/src/compare.c +@@ -452,7 +452,6 @@ diff_archive (void) + { + + set_next_block_after (current_header); +- decode_header (current_header, ¤t_stat_info, ¤t_format, 1); + + /* Print the block from current_header and current_stat_info. */ + +diff --git a/src/extract.c b/src/extract.c +index 947e3ed..71f4e4f 100644 +--- a/src/extract.c ++++ b/src/extract.c +@@ -1349,7 +1349,7 @@ extract_archive (void) + priv_set_remove_linkdir (); + + set_next_block_after (current_header); +- decode_header (current_header, ¤t_stat_info, ¤t_format, 1); ++ + if (!current_stat_info.file_name[0] + || (interactive_option + && !confirm ("extract", current_stat_info.file_name))) +diff --git a/src/list.c b/src/list.c +index 6e1971f..1edd504 100644 +--- a/src/list.c ++++ b/src/list.c +@@ -90,7 +90,8 @@ read_and (void (*do_something) (void)) + + /* Valid header. We should decode next field (mode) first. + Ensure incoming names are null terminated. */ +- ++ decode_header (current_header, ¤t_stat_info, ++ ¤t_format, 1); + if (! name_match (current_stat_info.file_name) + || (NEWER_OPTION_INITIALIZED (newer_mtime_option) + /* FIXME: We get mtime now, and again later; this causes +@@ -116,8 +117,6 @@ read_and (void (*do_something) (void)) + quotearg_colon (current_stat_info.file_name))); + /* Fall through. */ + default: +- decode_header (current_header, +- ¤t_stat_info, ¤t_format, 0); + skip_member (); + continue; + } +@@ -221,8 +220,6 @@ list_archive (void) + off_t block_ordinal = current_block_ordinal (); + + /* Print the header block. */ +- +- decode_header (current_header, ¤t_stat_info, ¤t_format, 0); + if (verbose_option) + print_header (¤t_stat_info, current_header, block_ordinal); + +diff --git a/tests/Makefile.am b/tests/Makefile.am +index e9b753c..fe2535a 100644 +--- a/tests/Makefile.am ++++ b/tests/Makefile.am +@@ -66,6 +66,7 @@ TESTSUITE_AT = \ + exclude03.at\ + exclude04.at\ + exclude05.at\ ++ exclude06.at\ + extrac01.at\ + extrac02.at\ + extrac03.at\ +diff --git a/tests/exclude06.at b/tests/exclude06.at +new file mode 100644 +index 0000000..f7ab141 +--- /dev/null ++++ b/tests/exclude06.at +@@ -0,0 +1,47 @@ ++# Process this file with autom4te to create testsuite. -*- Autotest -*- ++# Copyright (C) 2010 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 Free Software Foundation; either version 3, or (at your option) ++# any later version. ++ ++# This program 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 1.23 would fail to exclude names longer that 100 characters from ++# pax format archives. ++# ++# Reported-by: Matthew Peterson ++# References: ++# http://lists.gnu.org/archive/html/help-tar/2010-06/msg00000.html ++ ++AT_SETUP([exclude: long files in pax archives]) ++AT_KEYWORDS([exclude exclude06]) ++ ++m4_define([test_base_dir],[one/two/three/four/five/six/seven/eight/nine/ten/eleven/twelve/thirteen/fourteen/fifteen/sixteen/seventeen]) ++ ++AT_TAR_CHECK([ ++AT_TAR_MKHIER(test_base_dir) ++genfile --length 20 -f test_base_dir[/1.txt] ++genfile --length 20 -f test_base_dir[/1.c] ++ ++tar cf archive.tar test_base_dir ++mkdir out ++tar -C out -xf archive.tar --exclude='*.txt' ++find out -type f ++], ++[0], ++[[out/]test_base_dir[/1.c] ++], ++[], ++[], ++[], ++[pax]) ++ ++AT_CLEANUP +diff --git a/tests/testsuite.at b/tests/testsuite.at +index f581071..ef70b99 100644 +--- a/tests/testsuite.at ++++ b/tests/testsuite.at +@@ -130,6 +130,7 @@ m4_include([exclude02.at]) + m4_include([exclude03.at]) + m4_include([exclude04.at]) + m4_include([exclude05.at]) ++m4_include([exclude06.at]) + + m4_include([delete01.at]) + m4_include([delete02.at]) diff --git a/tar.spec b/tar.spec index f6beb31..c8c964d 100644 --- a/tar.spec +++ b/tar.spec @@ -5,7 +5,7 @@ Summary: A GNU file archiving program Name: tar Epoch: 2 Version: 1.23 -Release: 5%{?dist} +Release: 6%{?dist} License: GPLv3+ Group: Applications/Archiving URL: http://www.gnu.org/software/tar/ @@ -31,6 +31,10 @@ Patch5: tar-1.22-atime-rofs.patch Patch6: tar-1.22-fortifysourcessigabrt.patch #oldarchive option was not working(#594044) Patch7: tar-1.23-oldarchive.patch +#fix exclusion of long file names with --xattrs (#634866) +Patch8: tar-1.23-longnames.patch +#do not crash with --listed-incremental (#635318) +Patch9: tar-1.23-listedincremental.patch Requires: info BuildRequires: autoconf automake gzip texinfo gettext libacl-devel gawk rsh %if %{WITH_SELINUX} @@ -61,6 +65,8 @@ the rmt package. %patch5 -p1 -b .rofs %patch6 -p1 -b .fortify %patch7 -p1 -b .oldarchive +%patch8 -p1 -b .longnames +%patch9 -p1 -b .listedincremental autoreconf @@ -122,6 +128,10 @@ fi %{_infodir}/tar.info* %changelog +* Mon Sep 20 2010 Kamil Dudka 2:1.23-6 +- fix exclusion of long file names with --xattrs (#634866) +- do not crash with --listed-incremental (#635318) + * Mon Aug 16 2010 Ondrej Vasik 2:1.23-5 - add support for security.NTACL xattrs (#621215)