From aaf79e74ea1f5dbcd5ce95b7dfaa69c071deaa0e Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Mon, 2 May 2005 21:46:44 +0000 Subject: Add fix from redhat #90619. (Portage version: 2.0.51.21) --- app-arch/cpio/ChangeLog | 10 ++- app-arch/cpio/cpio-2.6-r3.ebuild | 47 ++++++++++ app-arch/cpio/files/cpio-2.6-chmodRaceC.patch | 125 ++++++++++++++++++++++++++ app-arch/cpio/files/digest-cpio-2.6-r3 | 1 + 4 files changed, 181 insertions(+), 2 deletions(-) create mode 100644 app-arch/cpio/cpio-2.6-r3.ebuild create mode 100644 app-arch/cpio/files/cpio-2.6-chmodRaceC.patch create mode 100644 app-arch/cpio/files/digest-cpio-2.6-r3 (limited to 'app-arch/cpio') diff --git a/app-arch/cpio/ChangeLog b/app-arch/cpio/ChangeLog index 3ef829891c0b..1ed580570c14 100644 --- a/app-arch/cpio/ChangeLog +++ b/app-arch/cpio/ChangeLog @@ -1,6 +1,12 @@ # ChangeLog for app-arch/cpio -# Copyright 2002-2005 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/app-arch/cpio/ChangeLog,v 1.19 2005/03/30 19:12:01 wolf31o2 Exp $ +# Copyright 1999-2005 Gentoo Foundation; Distributed under the GPL v2 +# $Header: /var/cvsroot/gentoo-x86/app-arch/cpio/ChangeLog,v 1.20 2005/05/02 21:46:44 vapier Exp $ + +*cpio-2.6-r3 (02 May 2005) + + 02 May 2005; Mike Frysinger + +files/cpio-2.6-chmodRaceC.patch, +cpio-2.6-r3.ebuild: + Add fix from redhat #90619. 30 Mar 2005; Chris Gianelloni cpio-2.6-r2.ebuild: Marking stable for genkernel. diff --git a/app-arch/cpio/cpio-2.6-r3.ebuild b/app-arch/cpio/cpio-2.6-r3.ebuild new file mode 100644 index 000000000000..fde6986f5e7d --- /dev/null +++ b/app-arch/cpio/cpio-2.6-r3.ebuild @@ -0,0 +1,47 @@ +# Copyright 1999-2005 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/app-arch/cpio/cpio-2.6-r3.ebuild,v 1.1 2005/05/02 21:46:44 vapier Exp $ + +inherit eutils + +DESCRIPTION="A file archival tool which can also read and write tar files" +HOMEPAGE="http://www.gnu.org/software/cpio/cpio.html" +SRC_URI="mirror://gnu/cpio/${P}.tar.bz2" + +LICENSE="GPL-2 LGPL-2" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~ppc-macos ~s390 ~sh ~sparc ~x86" +IUSE="nls" + +DEPEND="" + +src_unpack() { + unpack ${A} + cd "${S}" + epatch "${FILESDIR}"/${PV}-rili-big-files.patch #68520 + epatch "${FILESDIR}"/${PV}-isnumber.patch #74929 + epatch "${FILESDIR}"/${PV}-umask.patch #79844 + epatch "${FILESDIR}"/${PV}-lstat.patch #80246 + epatch "${FILESDIR}"/${P}-chmodRaceC.patch #90619 + epatch "${FILESDIR}"/${P}-gcc4-tests.patch #89123 +} + +src_compile() { + # The configure script has a useless check for gethostname in + # libnsl ... but cpio doesn't utilize the lib/func anywhere, + # so let's force the lib to not be detected + ac_cv_lib_nsl_gethostname=no \ + econf \ + $(use_enable nls) \ + --bindir=/bin \ + --with-rmt=/usr/sbin/rmt \ + || die + emake || die +} + +src_install() { + make install DESTDIR="${D}" || die + dodoc ChangeLog NEWS README INSTALL + rm -f "${D}"/usr/share/man/man1/mt.1 + rmdir "${D}"/usr/libexec +} diff --git a/app-arch/cpio/files/cpio-2.6-chmodRaceC.patch b/app-arch/cpio/files/cpio-2.6-chmodRaceC.patch new file mode 100644 index 000000000000..6d9dd1fe6c79 --- /dev/null +++ b/app-arch/cpio/files/cpio-2.6-chmodRaceC.patch @@ -0,0 +1,125 @@ +Ripped from Fedora. + +http://bugs.gentoo.org/90619 + +--- cpio-2.6/src/copyin.c.chmodRaceC 2005-04-25 13:19:34.079310381 +0200 ++++ cpio-2.6/src/copyin.c 2005-04-25 14:09:32.514889697 +0200 +@@ -389,19 +389,26 @@ + continue; + } + +- if (close (out_file_des) < 0) +- error (0, errno, "%s", d->header.c_name); +- ++ /* ++ * Avoid race condition. ++ * Set chown and chmod before closing the file desc. ++ * pvrabec@redhat.com ++ */ ++ + /* File is now copied; set attributes. */ + if (!no_chown_flag) +- if ((chown (d->header.c_name, ++ if ((fchown (out_file_des, + set_owner_flag ? set_owner : d->header.c_uid, + set_group_flag ? set_group : d->header.c_gid) < 0) + && errno != EPERM) + error (0, errno, "%s", d->header.c_name); + /* chown may have turned off some permissions we wanted. */ +- if (chmod (d->header.c_name, (int) d->header.c_mode) < 0) ++ if (fchmod (out_file_des, (int) d->header.c_mode) < 0) ++ error (0, errno, "%s", d->header.c_name); ++ ++ if (close (out_file_des) < 0) + error (0, errno, "%s", d->header.c_name); ++ + if (retain_time_flag) + { + times.actime = times.modtime = d->header.c_mtime; +@@ -557,6 +564,25 @@ + write (out_file_des, "", 1); + delayed_seek_count = 0; + } ++ ++ /* ++ * Avoid race condition. ++ * Set chown and chmod before closing the file desc. ++ * pvrabec@redhat.com ++ */ ++ ++ /* File is now copied; set attributes. */ ++ if (!no_chown_flag) ++ if ((fchown (out_file_des, ++ set_owner_flag ? set_owner : file_hdr->c_uid, ++ set_group_flag ? set_group : file_hdr->c_gid) < 0) ++ && errno != EPERM) ++ error (0, errno, "%s", file_hdr->c_name); ++ ++ /* chown may have turned off some permissions we wanted. */ ++ if (fchmod (out_file_des, (int) file_hdr->c_mode) < 0) ++ error (0, errno, "%s", file_hdr->c_name); ++ + if (close (out_file_des) < 0) + error (0, errno, "%s", file_hdr->c_name); + +@@ -567,18 +593,6 @@ + file_hdr->c_name, crc, file_hdr->c_chksum); + } + +- /* File is now copied; set attributes. */ +- if (!no_chown_flag) +- if ((chown (file_hdr->c_name, +- set_owner_flag ? set_owner : file_hdr->c_uid, +- set_group_flag ? set_group : file_hdr->c_gid) < 0) +- && errno != EPERM) +- error (0, errno, "%s", file_hdr->c_name); +- +- /* chown may have turned off some permissions we wanted. */ +- if (chmod (file_hdr->c_name, (int) file_hdr->c_mode) < 0) +- error (0, errno, "%s", file_hdr->c_name); +- + if (retain_time_flag) + { + struct utimbuf times; /* For setting file times. */ +@@ -589,7 +603,7 @@ + if (utime (file_hdr->c_name, ×) < 0) + error (0, errno, "%s", file_hdr->c_name); + } +- ++ + tape_skip_padding (in_file_des, file_hdr->c_filesize); + if (file_hdr->c_nlink > 1 + && (archive_format == arf_newascii || archive_format == arf_crcascii) ) +--- cpio-2.6/src/copypass.c.chmodRaceC 2004-09-06 14:09:04.000000000 +0200 ++++ cpio-2.6/src/copypass.c 2005-04-25 14:09:38.135076926 +0200 +@@ -181,19 +181,25 @@ + } + if (close (in_file_des) < 0) + error (0, errno, "%s", input_name.ds_string); +- if (close (out_file_des) < 0) +- error (0, errno, "%s", output_name.ds_string); +- ++ /* ++ * Avoid race condition. ++ * Set chown and chmod before closing the file desc. ++ * pvrabec@redhat.com ++ */ + /* Set the attributes of the new file. */ + if (!no_chown_flag) +- if ((chown (output_name.ds_string, ++ if ((fchown (out_file_des, + set_owner_flag ? set_owner : in_file_stat.st_uid, + set_group_flag ? set_group : in_file_stat.st_gid) < 0) + && errno != EPERM) + error (0, errno, "%s", output_name.ds_string); + /* chown may have turned off some permissions we wanted. */ +- if (chmod (output_name.ds_string, in_file_stat.st_mode) < 0) ++ if (fchmod (out_file_des, in_file_stat.st_mode) < 0) ++ error (0, errno, "%s", output_name.ds_string); ++ ++ if (close (out_file_des) < 0) + error (0, errno, "%s", output_name.ds_string); ++ + if (reset_time_flag) + { + times.actime = in_file_stat.st_atime; diff --git a/app-arch/cpio/files/digest-cpio-2.6-r3 b/app-arch/cpio/files/digest-cpio-2.6-r3 new file mode 100644 index 000000000000..822d7f4e46f3 --- /dev/null +++ b/app-arch/cpio/files/digest-cpio-2.6-r3 @@ -0,0 +1 @@ +MD5 25e0e8725bc60ed3460c9cde92752674 cpio-2.6.tar.bz2 448452 -- cgit v1.2.3-65-gdbad