]> code.ossystems Code Review - openembedded-core.git/commitdiff
rpm: fix fprint pointer issue
authorQing He <qing.he@intel.com>
Fri, 27 May 2011 09:03:18 +0000 (17:03 +0800)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Fri, 27 May 2011 12:17:46 +0000 (13:17 +0100)
[YOCTO #1030]

Signed-off-by: Qing He <qing.he@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
meta/recipes-devtools/rpm/rpm/fprint-pointer-fix.patch [new file with mode: 0644]
meta/recipes-devtools/rpm/rpm_5.4.0.bb

diff --git a/meta/recipes-devtools/rpm/rpm/fprint-pointer-fix.patch b/meta/recipes-devtools/rpm/rpm/fprint-pointer-fix.patch
new file mode 100644 (file)
index 0000000..87a92eb
--- /dev/null
@@ -0,0 +1,35 @@
+Upstream-Status: Submitted
+
+From: Qing He <qing.he@intel.com>
+Subject: [PATCH] rpm 5.4.0: Fix pointer mishandling
+
+In fpLookupSubdir, data returned by hash should be of type
+"struct rpmffi_s **" instead of "struct rpmffi_s *" to avoid
+segfault.
+
+Signed-off-by: Qing He <qing.he@intel.com>
+
+diff --git a/rpmdb/fprint.c b/rpmdb/fprint.c
+index 0e76148..82b8f45 100644
+--- a/rpmdb/fprint.c
++++ b/rpmdb/fprint.c
+@@ -333,7 +333,7 @@ restart:
+     *te = '\0';
+     while (te < se) {
+-      struct rpmffi_s * recs;
++      struct rpmffi_s ** recs;
+       int numRecs;
+       int i;
+@@ -346,8 +346,8 @@ restart:
+           const char * link;
+           int fx;
+-          fx = recs[i].fileno;
+-          fi =  recs[i].p->fi;
++          fx = recs[i]->fileno;
++          fi =  recs[i]->p->fi;
+           flink = fi->flinks[fx];
+           if (!(flink && *flink != '\0'))
+               continue;
index ff55469d20386a2c5c1388f9e2581e96f4b58e23..d3f85f22a1ecb71df24ad93dd33e6c85993ddcb4 100644 (file)
@@ -43,7 +43,7 @@ LICENSE = "LGPL 2.1"
 LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=2d5025d4aa3495befef8f17206a5b0a1"
 
 DEPENDS = "bzip2 zlib python perl db openssl elfutils expat libpcre attr acl popt"
-PR = "r15"
+PR = "r16"
 
 # rpm2cpio is a shell script, which is part of the rpm src.rpm.  It is needed
 # in order to extract the distribution SRPM into a format we can extract...
@@ -57,6 +57,7 @@ SRC_URI = "http://www.rpm5.org/files/rpm/rpm-5.4/rpm-5.4.0-0.20101229.src.rpm;ex
           file://rpm-nofsync.patch \
           file://rpm-solvedb.patch \
           file://rpm-tools-mtree-LDFLAGS.patch \
+          file://fprint-pointer-fix.patch \
          "
 
 #           file://hdraddorappend.patch \