diff --git a/cpio-2.9-dir_perm.patch b/cpio-2.9-dir_perm.patch new file mode 100644 index 0000000..b4a07d0 --- /dev/null +++ b/cpio-2.9-dir_perm.patch @@ -0,0 +1,101 @@ +diff -up cpio-2.9/src/extern.h.orig cpio-2.9/src/extern.h +--- cpio-2.9/src/extern.h.orig 2007-06-28 14:59:38.000000000 +0200 ++++ cpio-2.9/src/extern.h 2008-02-13 15:24:37.000000000 +0100 +@@ -211,7 +211,7 @@ uintmax_t from_ascii (char const *where, + + void delay_set_stat (char const *file_name, struct stat *st, + mode_t invert_permissions); +-void repair_delayed_set_stat (char const *dir, ++int repair_delayed_set_stat (char const *dir, + struct stat *dir_stat_info); + void apply_delayed_set_stat (void); + +diff -up cpio-2.9/src/copyin.c.orig cpio-2.9/src/copyin.c +--- cpio-2.9/src/copyin.c.orig 2007-06-28 12:51:09.000000000 +0200 ++++ cpio-2.9/src/copyin.c 2008-02-14 10:28:33.000000000 +0100 +@@ -570,6 +570,7 @@ static void + copyin_directory (struct cpio_file_stat *file_hdr, int existing_dir) + { + int res; /* Result of various function calls. */ ++ struct stat file_stat; + #ifdef HPUX_CDF + int cdf_flag; /* True if file is a CDF. */ + int cdf_char; /* Index of `+' char indicating a CDF. */ +@@ -626,7 +627,6 @@ copyin_directory (struct cpio_file_stat + create_all_directories(), so the mkdir will fail + because the directory exists. If that's the case, + don't complain about it. */ +- struct stat file_stat; + if (errno != EEXIST) + { + mkdir_error (file_hdr->c_name); +@@ -645,7 +645,11 @@ copyin_directory (struct cpio_file_stat + } + } + +- set_perms (-1, file_hdr); ++ /* if the directory is queued for delayed_set_stat, ++ fix permissions in the queue, otherwise set the permissions now */ ++ cpio_to_stat(file_hdr, &file_stat); ++ if (repair_delayed_set_stat(file_hdr->c_name, &file_stat)) ++ set_perms (-1, file_hdr); + } + + static void +diff -up cpio-2.9/src/makepath.c.orig cpio-2.9/src/makepath.c +diff -up cpio-2.9/src/util.c.orig cpio-2.9/src/util.c +--- cpio-2.9/src/util.c.orig 2007-06-28 15:04:51.000000000 +0200 ++++ cpio-2.9/src/util.c 2008-02-14 13:24:37.000000000 +0100 +@@ -1265,6 +1265,16 @@ stat_to_cpio (struct cpio_file_stat *hdr + hdr->c_tar_linkname = NULL; + } + ++void ++cpio_to_stat (struct cpio_file_stat *hdr, struct stat *st) ++{ ++ stat (hdr->c_name, st); ++ st->st_mode = hdr->c_mode; ++ st->st_uid = CPIO_UID(hdr->c_uid); ++ st->st_gid = CPIO_GID(hdr->c_gid); ++ st->st_mtime = hdr->c_mtime; ++} ++ + #ifndef HAVE_FCHOWN + # define fchown(fd, uid, gid) (-1) + #endif +@@ -1389,7 +1399,7 @@ delay_set_stat (char const *file_name, s + created within the file name of DIR. The intermediate directory turned + out to be the same as this directory, e.g. due to ".." or symbolic + links. *DIR_STAT_INFO is the status of the directory. */ +-void ++int + repair_delayed_set_stat (char const *dir, + struct stat *dir_stat_info) + { +@@ -1400,22 +1410,19 @@ repair_delayed_set_stat (char const *dir + if (stat (data->stat.c_name, &st) != 0) + { + stat_error (data->stat.c_name); +- return; ++ return 0; + } + + if (st.st_dev == dir_stat_info->st_dev + && st.st_ino == dir_stat_info->st_ino) + { + stat_to_cpio (&data->stat, dir_stat_info); +- data->invert_permissions = +- ((dir_stat_info->st_mode ^ st.st_mode) +- & MODE_RWX & ~ newdir_umask); +- return; ++ data->invert_permissions = 0; ++ return 0; + } + } + +- ERROR ((0, 0, _("%s: Unexpected inconsistency when making directory"), +- quotearg_colon (dir))); ++ return -1; + } + + void diff --git a/cpio.changes b/cpio.changes index 757736f..1283444 100644 --- a/cpio.changes +++ b/cpio.changes @@ -1,3 +1,14 @@ +------------------------------------------------------------------- +Thu Mar 13 19:03:41 CET 2008 - lmichnovic@suse.cz + +- lang subpackage split off + +------------------------------------------------------------------- +Thu Mar 13 18:55:59 CET 2008 - lmichnovic@suse.cz + +- applying upstream patch cpio-2.9-dir_perm.patch which fixes + incorrect directory permissions after archive extraction + ------------------------------------------------------------------- Thu Nov 29 15:49:49 CET 2007 - lmichnovic@suse.cz diff --git a/cpio.spec b/cpio.spec index c643c05..65033c9 100644 --- a/cpio.spec +++ b/cpio.spec @@ -1,7 +1,7 @@ # # spec file for package cpio (Version 2.9) # -# Copyright (c) 2007 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2008 SUSE LINUX Products GmbH, Nuernberg, Germany. # This file and all modifications and additions to the pristine # package are under the same license as the package itself. # @@ -10,13 +10,14 @@ # norootforbuild + Name: cpio Url: http://www.gnu.org/software/cpio/cpio.html License: GPL v3 only Group: Productivity/Archiving/Compression AutoReqProv: on Version: 2.9 -Release: 27 +Release: 44 Summary: A Backup and Archiving Utility Source: cpio-2.9.tar.bz2 Patch1: cpio-2.9-no_rmt.patch @@ -32,8 +33,10 @@ Patch10: cpio-2.9-segfault_in_copyin.patch Patch11: cpio-2.9-avoid_overflow_warning.patch Patch12: cpio-2.9-doc_typo.patch Patch13: cpio-2.9-m4_macro.patch +Patch14: cpio-2.9-dir_perm.patch PreReq: %install_info_prereq BuildRoot: %{_tmppath}/%{name}-%{version}-build +Requires: %{name}-lang = %{version} %description GNU cpio is a program to manage archives of files. This package also @@ -54,6 +57,7 @@ Authors: David J. MacKenzie Jim Meyering +%lang_package %prep %setup %patch1 @@ -69,6 +73,7 @@ Authors: %patch11 %patch12 %patch13 +%patch14 -p1 chmod 755 . chmod u+w * chmod a+r * @@ -98,7 +103,7 @@ ln -sf ../../bin/cpio $RPM_BUILD_ROOT/usr/bin/cpio %postun %install_info_delete --info-dir=%{_infodir} %{_infodir}/%{name}.info.gz -%files -f %{name}.lang +%files %defattr(-,root,root) /bin/cpio /usr/bin/cpio @@ -108,32 +113,39 @@ ln -sf ../../bin/cpio $RPM_BUILD_ROOT/usr/bin/cpio %doc %{_mandir}/man1/mt.1.gz #/usr/share/locale/*/LC_MESSAGES/cpio.mo +%files lang -f %{name}.lang + %changelog -* Thu Nov 29 2007 - lmichnovic@suse.cz +* Thu Mar 13 2008 lmichnovic@suse.cz +- lang subpackage split off +* Thu Mar 13 2008 lmichnovic@suse.cz +- applying upstream patch cpio-2.9-dir_perm.patch which fixes + incorrect directory permissions after archive extraction +* Thu Nov 29 2007 lmichnovic@suse.cz - removed unused m4 macro gl_LONG_LONG (*m4_macro.patch) -* Wed Nov 07 2007 - lmichnovic@suse.cz +* Wed Nov 07 2007 lmichnovic@suse.cz - upstream fix of typo in documantation (*doc_typo.patch) -* Tue Oct 23 2007 - lmichnovic@suse.cz +* Tue Oct 23 2007 lmichnovic@suse.cz - rewrote code which uses overflow to copy string in structure and gcc was complaining about it (*avoid_overflow_warning.patch) -* Mon Oct 01 2007 - lmichnovic@suse.cz +* Mon Oct 01 2007 lmichnovic@suse.cz - Fixed typo in copin.c causing segfault [#329744] (*segfault_in_copyin.patch) -* Tue Sep 25 2007 - lmichnovic@suse.cz +* Tue Sep 25 2007 lmichnovic@suse.cz - fix for compiling with new gcc 4.3 (*gcc4_3.patch) -* Mon Aug 20 2007 - lmichnovic@suse.cz +* Mon Aug 20 2007 lmichnovic@suse.cz - fixed typo in paxlib-owl-alloca.patch [#301416] -* Fri Aug 17 2007 - lmichnovic@suse.cz +* Fri Aug 17 2007 lmichnovic@suse.cz - upstream fix: use of alloca can cause stack overflow (paxlib-owl-alloca.patch) -* Tue Aug 14 2007 - lmichnovic@suse.cz +* Tue Aug 14 2007 lmichnovic@suse.cz - CAN-2005-1111 is not fixed completely in 2.9 (chmodRaceC.patch) based on fedora patch -* Wed Jul 25 2007 - lmichnovic@suse.cz +* Wed Jul 25 2007 lmichnovic@suse.cz - fixed types of variables for LFS support (*lfs_correction.patch) -* Tue Jul 24 2007 - lmichnovic@suse.cz +* Tue Jul 24 2007 lmichnovic@suse.cz - adjusted *mt.patch to fix compression handling [#223494] -* Fri Jul 20 2007 - lmichnovic@suse.cz +* Fri Jul 20 2007 lmichnovic@suse.cz - update to version 2.9 - obsoletes *lstat.patch * Licensed under the GPLv3. @@ -162,79 +174,79 @@ ln -sf ../../bin/cpio $RPM_BUILD_ROOT/usr/bin/cpio --no-absolute-pathnames; option --absolute-pathnames is still possible - obsoletes *checksum.patch, fix_umask.patch, sparse.patch - using lang macro -* Thu Sep 21 2006 - lmichnovic@suse.cz +* Thu Sep 21 2006 lmichnovic@suse.cz - fixed typo in cpio-2.6.dif; renamed to *-mt.patch - united suffix of patches -* Tue Sep 19 2006 - schwab@suse.de +* Tue Sep 19 2006 schwab@suse.de - Fix missing newline after mt status. -* Mon Jul 24 2006 - rguenther@suse.de +* Mon Jul 24 2006 rguenther@suse.de - remove useless build-dependency on rsh. -* Wed Jan 25 2006 - mls@suse.de +* Wed Jan 25 2006 mls@suse.de - converted neededforbuild to BuildRequires -* Tue Dec 06 2005 - fehr@suse.de +* Tue Dec 06 2005 fehr@suse.de - add cpio-2.6-chmodRaceC.patch and cpio-2.6-dirTraversal.patch to fix bug #80226 - add cpio-2.6-writeOutHeaderBufferOverflow.patch to fix #133454 - add cpio-2.6-checksum.patch fix wrong checksum on 64bit archs - add cpio-2.6-lfs.patch to support large files on 32bit archs -* Wed Aug 10 2005 - fehr@suse.de +* Wed Aug 10 2005 fehr@suse.de - fix call to setlocale to make multibyte characters work (#98902) -* Thu Jun 30 2005 - fehr@suse.de +* Thu Jun 30 2005 fehr@suse.de - open with O_NONBLOCK option (#94449) -* Wed May 04 2005 - ro@suse.de +* Wed May 04 2005 ro@suse.de - properly detect lstat in configure -* Wed Apr 27 2005 - snwint@suse.de +* Wed Apr 27 2005 snwint@suse.de - fix '--sparse' option check -* Mon Apr 25 2005 - fehr@suse.de +* Mon Apr 25 2005 fehr@suse.de - update to cpio 2.6 -* Mon Jan 24 2005 - fehr@suse.de +* Mon Jan 24 2005 fehr@suse.de - fix problem with cpio not respecting umask (#50054) -* Mon Jan 19 2004 - ro@suse.de +* Mon Jan 19 2004 ro@suse.de - fix build as user -* Sun Jan 11 2004 - adrian@suse.de +* Sun Jan 11 2004 adrian@suse.de - add %%defattr -* Thu Apr 24 2003 - ro@suse.de +* Thu Apr 24 2003 ro@suse.de - fix install_info --delete call and move from preun to postun -* Tue Apr 15 2003 - coolo@suse.de +* Tue Apr 15 2003 coolo@suse.de - use BuildRoot -* Fri Feb 07 2003 - fehr@suse.de +* Fri Feb 07 2003 fehr@suse.de - Use %%install_info macro -* Tue Sep 17 2002 - ro@suse.de +* Tue Sep 17 2002 ro@suse.de - removed bogus self-provides -* Tue Aug 13 2002 - mfabian@suse.de +* Tue Aug 13 2002 mfabian@suse.de - add cpio-2.5-i18n-0.1.patch received from "Mitsuru Chinen" The patch just adds a setlocale (LC_ALL, ""). -* Sun Jul 28 2002 - kukuk@suse.de +* Sun Jul 28 2002 kukuk@suse.de - remove unused tetex from neededforbuild -* Fri Jul 05 2002 - fehr@suse.de +* Fri Jul 05 2002 fehr@suse.de - update to new version 2.5 -* Mon Dec 03 2001 - fehr@suse.de +* Mon Dec 03 2001 fehr@suse.de - make the -c switch comatible to SVR4 (and compatible to RedHat) - fix the man page accordingly - add rsh to #needfobuild to allow remote file access again (#12543) -* Sun Dec 03 2000 - schwab@suse.de +* Sun Dec 03 2000 schwab@suse.de - Fix a few bugs and typos. -* Tue Nov 28 2000 - fehr@suse.de +* Tue Nov 28 2000 fehr@suse.de - add compile options for LFS -* Mon Apr 17 2000 - fehr@suse.de +* Mon Apr 17 2000 fehr@suse.de - move cpio binary to /bin for compatibility with RedHat -* Fri Feb 25 2000 - kukuk@suse.de +* Fri Feb 25 2000 kukuk@suse.de - remove Makefile.Linux - use _infodir/_mandir -* Mon Sep 13 1999 - bs@suse.de +* Mon Sep 13 1999 bs@suse.de - ran old prepare_spec on spec file to switch to new prepare_spec. -* Thu Sep 02 1999 - fehr@suse.de +* Thu Sep 02 1999 fehr@suse.de - Fix patch for broken header (cast to short instead of int) -* Wed Aug 04 1999 - kukuk@suse.de +* Wed Aug 04 1999 kukuk@suse.de - Add patch for broken header in oldascii format -* Tue Sep 22 1998 - ro@suse.de +* Tue Sep 22 1998 ro@suse.de - define _GNU_SOURCE for glibc where including getopt -* Tue Sep 01 1998 - ro@suse.de +* Tue Sep 01 1998 ro@suse.de - fixed strdup-macro problem -* Thu Jun 05 1997 - florian@suse.de +* Thu Jun 05 1997 florian@suse.de - go through the list of regex in a more suitable way (from ma@suse.de) -* Sun Apr 13 1997 - florian@suse.de +* Mon Apr 14 1997 florian@suse.de - update to new version 2.4.2 - add Linux patches from RedHat - add patches from gnu.utils.bugs