diff --git a/cpio-2.10-patternnamesigsegv.patch b/cpio-2.10-patternnamesigsegv.patch new file mode 100644 index 0000000..c3b9420 --- /dev/null +++ b/cpio-2.10-patternnamesigsegv.patch @@ -0,0 +1,41 @@ +diff -urNp cpio-2.10-orig/src/copyin.c cpio-2.10/src/copyin.c +--- cpio-2.10-orig/src/copyin.c 2010-02-22 12:57:59.000000000 +0100 ++++ cpio-2.10/src/copyin.c 2010-02-22 12:55:26.000000000 +0100 +@@ -944,20 +944,23 @@ read_pattern_file () + pattern_fp = fopen (pattern_file_name, "r"); + if (pattern_fp == NULL) + open_error (pattern_file_name); +- while (ds_fgetstr (pattern_fp, &pattern_name, '\n') != NULL) +- { +- if (new_num_patterns >= max_new_patterns) +- { +- max_new_patterns += 1; +- new_save_patterns = (char **) +- xrealloc ((char *) new_save_patterns, +- max_new_patterns * sizeof (char *)); +- } +- new_save_patterns[new_num_patterns] = xstrdup (pattern_name.ds_string); +- ++new_num_patterns; +- } +- if (ferror (pattern_fp) || fclose (pattern_fp) == EOF) +- close_error (pattern_file_name); ++ else ++ { ++ while (ds_fgetstr (pattern_fp, &pattern_name, '\n') != NULL) ++ { ++ if (new_num_patterns >= max_new_patterns) ++ { ++ max_new_patterns += 1; ++ new_save_patterns = (char **) ++ xrealloc ((char *) new_save_patterns, ++ max_new_patterns * sizeof (char *)); ++ } ++ new_save_patterns[new_num_patterns] = xstrdup (pattern_name.ds_string); ++ ++new_num_patterns; ++ } ++ if (ferror (pattern_fp) || fclose (pattern_fp) == EOF) ++ close_error (pattern_file_name); ++ } + + for (i = 0; i < num_patterns; ++i) + new_save_patterns[i] = save_patterns[i]; diff --git a/cpio-2.6-setLocale.patch b/cpio-2.6-setLocale.patch deleted file mode 100644 index 84e4428..0000000 --- a/cpio-2.6-setLocale.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- cpio-2.6/lib/system.h.setLocale 2006-12-05 11:36:04.000000000 +0100 -+++ cpio-2.6/lib/system.h 2006-12-05 11:36:22.000000000 +0100 -@@ -471,6 +471,8 @@ - - /* Prototypes for external functions. */ - -+#define HAVE_SETLOCALE 1 -+ - #if HAVE_LOCALE_H - # include - #endif diff --git a/cpio.spec b/cpio.spec index ba208c3..9403650 100644 --- a/cpio.spec +++ b/cpio.spec @@ -3,21 +3,21 @@ Summary: A GNU archiving program Name: cpio Version: 2.10 -Release: 4%{?dist} +Release: 5%{?dist} License: GPLv3+ Group: Applications/Archiving URL: http://www.gnu.org/software/cpio/ Source: ftp://ftp.gnu.org/gnu/cpio/cpio-%{version}.tar.bz2 Source1: cpio.1 -Patch1: cpio-2.6-setLocale.patch -Patch2: cpio-2.9-rh.patch -Patch3: cpio-2.9-chmodRaceC.patch -Patch4: cpio-2.9-exitCode.patch -Patch5: cpio-2.9-dir_perm.patch -Patch6: cpio-2.9-dev_number.patch -Patch7: cpio-2.9-sys_umask.patch -Patch8: cpio-2.9.90-defaultremoteshell.patch -Patch9: cpio-2.10-utimens.patch +Patch1: cpio-2.9-rh.patch +Patch2: cpio-2.9-chmodRaceC.patch +Patch3: cpio-2.9-exitCode.patch +Patch4: cpio-2.9-dir_perm.patch +Patch5: cpio-2.9-dev_number.patch +Patch6: cpio-2.9-sys_umask.patch +Patch7: cpio-2.9.90-defaultremoteshell.patch +Patch8: cpio-2.10-utimens.patch +Patch9: cpio-2.10-patternnamesigsegv.patch Requires(post): /sbin/install-info Requires(preun): /sbin/install-info BuildRequires: texinfo, autoconf, gettext, rmt @@ -39,15 +39,15 @@ Install cpio if you need a program to manage file archives. %prep %setup -q -%patch1 -p1 -b .setLocale -%patch2 -p1 -b .rh -%patch3 -p1 -b .chmodRaceC -%patch4 -p1 -b .exitCode -%patch5 -p1 -b .dir_perm -%patch6 -p1 -b .dev_number -%patch7 -p1 -b .sys_umask -%patch8 -p1 -b .defaultremote -%patch9 -p1 -b .utimens +%patch1 -p1 -b .rh +%patch2 -p1 -b .chmodRaceC +%patch3 -p1 -b .exitCode +%patch4 -p1 -b .dir_perm +%patch5 -p1 -b .dev_number +%patch6 -p1 -b .sys_umask +%patch7 -p1 -b .defaultremote +%patch8 -p1 -b .utimens +%patch9 -p1 -b .patternsegv autoheader @@ -92,6 +92,11 @@ fi %{_infodir}/*.info* %changelog +* Thu Feb 25 2010 Ondrej Vasik 2.10-5 +- remove redundant setLocale patch +- fix segfault with nonexisting file with patternnames + (#567022) + * Wed Jan 06 2010 Ondrej Vasik 2.10-4 - do not fail with new POSIX 2008 utimens() glibc call (#552320)