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]

Reply via email to