rpms/rpm/F-12 rpm-4.7.1-chmod-test.patch, NONE, 1.1 rpm-4.7.1-pgp-subkeys.patch, NONE, 1.1 rpm-4.7.1-python-types.patch, NONE, 1.1 rpm-4.7.1-rpmfc-data.patch, NONE, 1.1 rpm-4.7.1-sign-passcheck.patch, NONE, 1.1 rpm.spec, 1.361, 1.362 rpm-4.7.1-abs-filelist.patch, 1.1, NONE rpm-4.7.1-chroot-env-paths.patch, 1.1, NONE rpm-4.7.1-chroot-remove-env.patch, 1.1, NONE rpm-4.7.1-debug-perms.patch, 1.1, NONE rpm-4.7.1-duplicate-deps.patch, 1.1, NONE rpm-4.7.1-filedep-dnevr.patch, 1.1, NONE rpm-4.7.1-rpm2cpio-init.patch, 1.1, NONE

Panu Matilainen pmatilai at fedoraproject.org
Tue Dec 8 11:53:40 UTC 2009


Author: pmatilai

Update of /cvs/pkgs/rpms/rpm/F-12
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv435

Modified Files:
	rpm.spec 
Added Files:
	rpm-4.7.1-chmod-test.patch rpm-4.7.1-pgp-subkeys.patch 
	rpm-4.7.1-python-types.patch rpm-4.7.1-rpmfc-data.patch 
	rpm-4.7.1-sign-passcheck.patch 
Removed Files:
	rpm-4.7.1-abs-filelist.patch rpm-4.7.1-chroot-env-paths.patch 
	rpm-4.7.1-chroot-remove-env.patch rpm-4.7.1-debug-perms.patch 
	rpm-4.7.1-duplicate-deps.patch rpm-4.7.1-filedep-dnevr.patch 
	rpm-4.7.1-rpm2cpio-init.patch 
Log Message:
- update to 4.7.2 (http://rpm.org/wiki/Releases/4.7.2)
- fix posix chmod test to unbreak %%fixperms macro (#543035)
- avoid looking into OpenPGP subkeys (#436812)
- dont fail build on unrecognized non-executable files (#532489)
- fix password check result when gpg is missing (#496754)
- permit python to handle 64bit integer types from headers
- all header integer types are unsigned, match this in python too
- return python long objects where ints are not sufficient (#531243)


rpm-4.7.1-chmod-test.patch:
 configure.ac |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- NEW FILE rpm-4.7.1-chmod-test.patch ---
commit 545304577f0ac82b2e4c1caa97f02d87f41324f7
Author: Panu Matilainen <pmatilai at redhat.com>
Date:   Wed Dec 2 15:30:27 2009 +0200

    Fix the posix chown test for selinux enabled systems (RhBug:543035)
    - on selinux enabled systems, 'ls -l' mode string is longer than
      expected here, just trim the ls output to our expected length
    (cherry picked from commit 46d1ba04483af09590ed070186a1be10b57c5977)

diff --git a/configure.ac b/configure.ac
index 967566c..2274080 100644
--- a/configure.ac
+++ b/configure.ac
@@ -61,7 +61,7 @@ AC_MSG_CHECKING(POSIX chmod)
 touch foo.chmodtest
 chmod 744 foo.chmodtest
 chmod +X foo.chmodtest 2>/dev/null
-a=`ls -l foo.chmodtest | awk '{print $1}'`
+a=`ls -l foo.chmodtest | awk '{print substr($1,1,10)}'`
 rm -f foo.chmodtest
 if test "$a" = "-rwxr-xr-x"; then
     AC_MSG_RESULT(yes)

rpm-4.7.1-pgp-subkeys.patch:
 rpmpgp.c |    8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

--- NEW FILE rpm-4.7.1-pgp-subkeys.patch ---
commit 6eeb0bb06466d9eb75eb55efd514d3ecfe089042
Author: Panu Matilainen <pmatilai at redhat.com>
Date:   Wed Nov 25 15:07:17 2009 +0200

    We can't handle OpenPGP subkeys or secret keys, so dont even try
    - parsing subkeys ends up overwriting data in the main key, causing
      bogus signature checking failures
    - this is the final missing piece of RhBug:436812, short of adding
      proper support for subkeys (maybe someday...)
    (cherry picked from commit 98213fc4192c7af07037a0f3e9cce9e3b8509c02)

diff --git a/rpmio/rpmpgp.c b/rpmio/rpmpgp.c
index d7bbb5e..f76fc2b 100644
--- a/rpmio/rpmpgp.c
+++ b/rpmio/rpmpgp.c
@@ -1190,11 +1190,6 @@ static int pgpPrtPkt(const uint8_t *pkt, size_t pleft,
 	    else
 		memset(_digp->signid, 0, sizeof(_digp->signid));
 	}
-    case PGPTAG_PUBLIC_SUBKEY:
-	rc = pgpPrtKey(tag, h, hlen, _dig, _digp);
-	break;
-    case PGPTAG_SECRET_KEY:
-    case PGPTAG_SECRET_SUBKEY:
 	rc = pgpPrtKey(tag, h, hlen, _dig, _digp);
 	break;
     case PGPTAG_USER_ID:
@@ -1205,6 +1200,9 @@ static int pgpPrtPkt(const uint8_t *pkt, size_t pleft,
 	rc = pgpPrtComment(tag, h, hlen);
 	break;
 
+    case PGPTAG_PUBLIC_SUBKEY:
+    case PGPTAG_SECRET_KEY:
+    case PGPTAG_SECRET_SUBKEY:
     case PGPTAG_RESERVED:
     case PGPTAG_PUBLIC_SESSION_KEY:
     case PGPTAG_SYMMETRIC_SESSION_KEY:

rpm-4.7.1-python-types.patch:
 header-py.c |   26 ++++++++++++++++++++------
 1 file changed, 20 insertions(+), 6 deletions(-)

--- NEW FILE rpm-4.7.1-python-types.patch ---
diff --git a/python/header-py.c b/python/header-py.c
index 8ec2cb4..9c9b1e2 100644
--- a/python/header-py.c
+++ b/python/header-py.c
@@ -152,6 +152,7 @@ static PyObject * hdrKeyList(hdrObject * s)
 
 	switch (rpmtdType(td)) {
 	case RPM_BIN_TYPE:
+	case RPM_INT64_TYPE:
 	case RPM_INT32_TYPE:
 	case RPM_CHAR_TYPE:
 	case RPM_INT8_TYPE:
@@ -386,17 +387,30 @@ static PyObject * hdr_subscript(hdrObject * s, PyObject * item)
 	o = PyString_FromStringAndSize(data, count);
 	break;
 
+    case RPM_INT64_TYPE:
+	if (count != 1 || forceArray) {
+	    metao = PyList_New(0);
+	    for (i = 0; i < count; i++) {
+		o = PyLong_FromUnsignedLongLong(((uint64_t *) data)[i]);
+		PyList_Append(metao, o);
+		Py_DECREF(o);
+	    }
+	    o = metao;
+	} else {
+	    o = PyLong_FromUnsignedLongLong(*((uint64_t *) data));
+	}
+	break;
     case RPM_INT32_TYPE:
 	if (count != 1 || forceArray) {
 	    metao = PyList_New(0);
 	    for (i = 0; i < count; i++) {
-		o = PyInt_FromLong(((int *) data)[i]);
+		o = PyLong_FromLong(((uint32_t *) data)[i]);
 		PyList_Append(metao, o);
 		Py_DECREF(o);
 	    }
 	    o = metao;
 	} else {
-	    o = PyInt_FromLong(*((int *) data));
+	    o = PyLong_FromLong(*((uint32_t *) data));
 	}
 	break;
 
@@ -405,13 +419,13 @@ static PyObject * hdr_subscript(hdrObject * s, PyObject * item)
 	if (count != 1 || forceArray) {
 	    metao = PyList_New(0);
 	    for (i = 0; i < count; i++) {
-		o = PyInt_FromLong(((char *) data)[i]);
+		o = PyInt_FromLong(((uint8_t *) data)[i]);
 		PyList_Append(metao, o);
 		Py_DECREF(o);
 	    }
 	    o = metao;
 	} else {
-	    o = PyInt_FromLong(*((char *) data));
+	    o = PyInt_FromLong(*((uint8_t *) data));
 	}
 	break;
 
@@ -419,13 +433,13 @@ static PyObject * hdr_subscript(hdrObject * s, PyObject * item)
 	if (count != 1 || forceArray) {
 	    metao = PyList_New(0);
 	    for (i = 0; i < count; i++) {
-		o = PyInt_FromLong(((short *) data)[i]);
+		o = PyInt_FromLong(((uint16_t *) data)[i]);
 		PyList_Append(metao, o);
 		Py_DECREF(o);
 	    }
 	    o = metao;
 	} else {
-	    o = PyInt_FromLong(*((short *) data));
+	    o = PyInt_FromLong(*((uint16_t *) data));
 	}
 	break;
 

rpm-4.7.1-rpmfc-data.patch:
 rpmfc.c |   12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

--- NEW FILE rpm-4.7.1-rpmfc-data.patch ---
commit fa9fcc89146f08bce3b51d96d0ec9d4175db6978
Author: Panu Matilainen <pmatilai at redhat.com>
Date:   Thu Nov 26 10:22:41 2009 +0200

    Dont fail build on unrecognized non-executable files (ticket #105)
    - Generally only executable files are critical for dependency extraction,
      whereas oddball application data files can cause unnecessary build
      failure due to libmagic misdetections etc, so just let non-executables
      pass with a warning and mark them as unknown data
    (cherry picked from commit cfcd1f9bd98d5d0fc46a84931984efec3b9d47e2)

diff --git a/build/rpmfc.c b/build/rpmfc.c
index bcb5383..e4ba6b2 100644
--- a/build/rpmfc.c
+++ b/build/rpmfc.c
@@ -1245,6 +1245,7 @@ rpmRC rpmfcClassify(rpmfc fc, ARGV_t argv, rpm_mode_t * fmode)
     for (fc->ix = 0; fc->ix < fc->nfiles; fc->ix++) {
 	const char * ftype;
 	rpm_mode_t mode = (fmode ? fmode[fc->ix] : 0);
+	int is_executable = (mode & (S_IXUSR|S_IXGRP|S_IXOTH));
 
 	s = argv[fc->ix];
 	slen = strlen(s);
@@ -1277,11 +1278,16 @@ rpmRC rpmfcClassify(rpmfc fc, ARGV_t argv, rpm_mode_t * fmode)
 		ftype = magic_file(ms, s);
 
 	    if (ftype == NULL) {
-		rpmlog(RPMLOG_ERR, 
+		rpmlog(is_executable ? RPMLOG_ERR : RPMLOG_WARNING, 
 		       _("Recognition of file \"%s\" failed: mode %06o %s\n"),
 		       s, mode, magic_error(ms));
-		magic_close(ms);
-		return RPMRC_FAIL;
+		/* only executable files are critical to dep extraction */
+		if (is_executable) {
+		    magic_close(ms);
+		    return RPMRC_FAIL;
+		}
+		/* unrecognized non-executables get treated as "data" */
+		ftype = "data";
 	    }
 	}
 

rpm-4.7.1-sign-passcheck.patch:
 signature.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

--- NEW FILE rpm-4.7.1-sign-passcheck.patch ---
commit 31c5e0f9b7b09661611b50d84d26ba47ce97fffe
Author: Panu Matilainen <pmatilai at redhat.com>
Date:   Wed Nov 25 16:42:43 2009 +0200

    Fix signature password checking result on abnormal conditions (RhBug:496754)
    - Execve() failure wasn't returning an error code, causing rpm to
      think the password was ok when we couldn't even try verifying
    - Stricter return code checking from the password checking child:
      the password can only be ok if the child exits with WIFEXITED() *and*
      WIFEXITCODE() of 0. Also WIFEXITCODE() should only be called if
      WIFEXITED() returns true.
    (cherry picked from commit 2b41860984f0c4ebba5ebce93a18c9c0ca5e1065)

diff --git a/lib/signature.c b/lib/signature.c
index a501f3e..a2eaf9b 100644
--- a/lib/signature.c
+++ b/lib/signature.c
@@ -883,6 +883,7 @@ static int checkPassPhrase(const char * passPhrase, const rpmSigTag sigTag)
 
 	    rpmlog(RPMLOG_ERR, _("Could not exec %s: %s\n"), "gpg",
 			strerror(errno));
+	    _exit(EXIT_FAILURE);
 	}   break;
 	case RPMSIGTAG_RSA:
 	case RPMSIGTAG_PGP5:	/* XXX legacy */
@@ -932,7 +933,7 @@ static int checkPassPhrase(const char * passPhrase, const rpmSigTag sigTag)
 
     (void) waitpid(pid, &status, 0);
 
-    return ((!WIFEXITED(status) || WEXITSTATUS(status)) ? 1 : 0);
+    return ((WIFEXITED(status) && WEXITSTATUS(status) == 0)) ? 0 : 1;
 }
 
 char * rpmGetPassPhrase(const char * prompt, const rpmSigTag sigTag)


Index: rpm.spec
===================================================================
RCS file: /cvs/pkgs/rpms/rpm/F-12/rpm.spec,v
retrieving revision 1.361
retrieving revision 1.362
diff -u -p -r1.361 -r1.362
--- rpm.spec	21 Sep 2009 13:25:25 -0000	1.361
+++ rpm.spec	8 Dec 2009 11:53:40 -0000	1.362
@@ -11,7 +11,7 @@
 
 %define rpmhome /usr/lib/rpm
 
-%define rpmver 4.7.1
+%define rpmver 4.7.2
 %define snapver {nil}
 %define srcver %{rpmver}
 
@@ -21,7 +21,7 @@
 Summary: The RPM package management system
 Name: rpm
 Version: %{rpmver}
-Release: 6%{?dist}
+Release: 1%{?dist}
 Group: System Environment/Base
 Url: http://www.rpm.org/
 Source0: http://rpm.org/releases/rpm-4.7.x/%{name}-%{srcver}.tar.bz2
@@ -40,16 +40,14 @@ Patch3: rpm-4.6.0-fedora-specspo.patch
 
 # Patches already in upstream
 Patch200: rpm-4.7.1-bugurl.patch
-Patch201: rpm-4.7.1-abs-filelist.patch
-Patch202: rpm-4.7.1-debug-perms.patch
-Patch203: rpm-4.7.1-duplicate-deps.patch
-Patch204: rpm-4.7.1-chroot-env-paths.patch
-Patch205: rpm-4.7.1-rpm2cpio-init.patch
-Patch206: rpm-4.7.1-filedep-dnevr.patch
-Patch207: rpm-4.7.1-chroot-remove-env.patch
+Patch201: rpm-4.7.0-extra-provides.patch
+Patch202: rpm-4.7.1-pgp-subkeys.patch
+Patch203: rpm-4.7.1-sign-passcheck.patch
+Patch204: rpm-4.7.1-rpmfc-data.patch
+Patch205: rpm-4.7.1-chmod-test.patch
+Patch206: rpm-4.7.1-python-types.patch
 
 # These are not yet upstream
-Patch300: rpm-4.7.0-extra-provides.patch
 Patch301: rpm-4.6.0-niagara.patch
 Patch302: rpm-4.7.1-geode-i686.patch
 
@@ -98,6 +96,8 @@ BuildRequires: xz-devel >= 4.999.8
 %if %{with sqlite}
 BuildRequires: sqlite-devel
 %endif
+# XXX temporarily for chmod-test patch
+BuildRequires: autoconf automake
 
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 
@@ -201,15 +201,13 @@ packages on a system.
 %patch3 -p1 -b .fedora-specspo
 
 %patch200 -p1 -b .bugurl
-%patch201 -p1 -b .abs-filelist
-%patch202 -p1 -b .debug-perms
-%patch203 -p1 -b .duplicate-deps
-%patch204 -p1 -b .chroot-env-paths
-%patch205 -p1 -b .rpm2cpio.init
-%patch206 -p1 -b .filedep-dnevr
-%patch207 -p1 -b .chroot-remove-env
+%patch201 -p1 -b .extra-prov
+%patch202 -p1 -b .pgp-subkey
+%patch203 -p1 -b .sign-passcheck
+%patch204 -p1 -b .rpmfc-data
+%patch205 -p1 -b .chmod-test
+%patch206 -p1 -b .python-types
 
-%patch300 -p1 -b .extra-prov
 %patch301 -p1 -b .niagara
 %patch302 -p1 -b .geode
 
@@ -423,6 +421,16 @@ exit 0
 %doc doc/librpm/html/*
 
 %changelog
+* Tue Dec 08 2009 Panu Matilainen <pmatilai at redhat.com> - 4.7.2-1
+- update to 4.7.2 (http://rpm.org/wiki/Releases/4.7.2)
+- fix posix chmod test to unbreak %%fixperms macro (#543035)
+- avoid looking into OpenPGP subkeys (#436812)
+- dont fail build on unrecognized non-executable files (#532489)
+- fix password check result when gpg is missing (#496754)
+- permit python to handle 64bit integer types from headers
+- all header integer types are unsigned, match this in python too
+- return python long objects where ints are not sufficient (#531243)
+
 * Mon Sep 21 2009 Panu Matilainen <pmatilai at redhat.com> - 4.7.1-6
 - use relative paths within db environment (related to #507309, #507309...)
 - remove db environment on close in chrooted operation (related to above)


--- rpm-4.7.1-abs-filelist.patch DELETED ---


--- rpm-4.7.1-chroot-env-paths.patch DELETED ---


--- rpm-4.7.1-chroot-remove-env.patch DELETED ---


--- rpm-4.7.1-debug-perms.patch DELETED ---


--- rpm-4.7.1-duplicate-deps.patch DELETED ---


--- rpm-4.7.1-filedep-dnevr.patch DELETED ---


--- rpm-4.7.1-rpm2cpio-init.patch DELETED ---




More information about the fedora-extras-commits mailing list