RPM Package Manager, CVS Repository
http://rpm5.org/cvs/
____________________________________________________________________________
Server: rpm5.org Name: Jeff Johnson
Root: /v/rpm/cvs Email: [EMAIL PROTECTED]
Module: rpm Date: 23-Apr-2008 15:40:57
Branch: HEAD Handle: 2008042313405700
Modified files:
rpm CHANGES
rpm/rpmdb header.c
Log:
- jbj: header: free tag data on error retrurn with damaged data.
Summary:
Revision Changes Path
1.2304 +1 -0 rpm/CHANGES
1.155 +3 -0 rpm/rpmdb/header.c
____________________________________________________________________________
patch -p0 <<'@@ .'
Index: rpm/CHANGES
============================================================================
$ cvs diff -u -r1.2303 -r1.2304 CHANGES
--- rpm/CHANGES 23 Apr 2008 13:27:37 -0000 1.2303
+++ rpm/CHANGES 23 Apr 2008 13:40:57 -0000 1.2304
@@ -1,5 +1,6 @@
5.1.0 -> 5.2a0:
+ - jbj: header: free tag data on error retrurn with damaged data.
- rpm.org: rpmsw: insure that time has passed while calibrating
(#435309).
- jbj: header: fix: avoid double free with damaged data (#442761).
- jbj: rpmte: revert to individual tags instead of RPMTAG_NVRA.
@@ .
patch -p0 <<'@@ .'
Index: rpm/rpmdb/header.c
============================================================================
$ cvs diff -u -r1.154 -r1.155 header.c
--- rpm/rpmdb/header.c 22 Apr 2008 21:24:11 -0000 1.154
+++ rpm/rpmdb/header.c 23 Apr 2008 13:40:57 -0000 1.155
@@ -1288,6 +1288,8 @@
rdlen = regionSwab(NULL, ril, 0, pe, dataStart, dataEnd, 0);
/* XXX 1 on success. */
rc = (rdlen == 0) ? 0 : 1;
+ if (rc == 0)
+ he->p.ptr = _free(he->p.ptr);
} else {
count = entry->length;
he->p.ptr = (!minMem
@@ -2096,6 +2098,7 @@
if (!((rc == 0 && he->freeData == 0 && he->p.ptr == NULL) ||
(rc == 1 && he->freeData == 1 && he->p.ptr != NULL)))
{
+if (_hdr_debug)
fprintf(stderr, "==> %s(%u) %u %p[%u] free %u rc %d\n", name, (unsigned)
he->tag, (unsigned) he->t, he->p.ptr, (unsigned) he->c, he->freeData, rc);
}
/[EMAIL PROTECTED]@*/
@@ .
______________________________________________________________________
RPM Package Manager http://rpm5.org
CVS Sources Repository [email protected]