RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  ____________________________________________________________________________

  Server: rpm5.org                         Name:   Jeff Johnson
  Root:   /v/rpm/cvs                       Email:  j...@rpm5.org
  Module: rpm                              Date:   25-May-2009 00:48:45
  Branch: HEAD                             Handle: 2009052422484400

  Modified files:
    rpm                     CHANGES
    rpm/rpmdb               header.c

  Log:
    - jbj: header: fix: re-initialize headers from pool more carefully.

  Summary:
    Revision    Changes     Path
    1.2996      +1  -0      rpm/CHANGES
    1.190       +15 -2      rpm/rpmdb/header.c
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/CHANGES
  ============================================================================
  $ cvs diff -u -r1.2995 -r1.2996 CHANGES
  --- rpm/CHANGES       24 May 2009 22:27:46 -0000      1.2995
  +++ rpm/CHANGES       24 May 2009 22:48:44 -0000      1.2996
  @@ -1,5 +1,6 @@
   
   5.2b1 -> 5.3a1
  +    - jbj: header: fix: re-initialize headers from pool more carefully.
       - jbj: rpmps: fix: remove the hack-o-round, handle rpmps like other 
pools.
       - jbj: yarn: convert dbiIndex to usage mutex with refcounts.
       - jbj: yarn: convert Package to usage mutex with refcounts.
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/header.c
  ============================================================================
  $ cvs diff -u -r1.189 -r1.190 header.c
  --- rpm/rpmdb/header.c        23 May 2009 15:48:44 -0000      1.189
  +++ rpm/rpmdb/header.c        24 May 2009 22:48:44 -0000      1.190
  @@ -173,7 +173,12 @@
       h->baseurl = NULL;
       h->digest = NULL;
       h->rpmdb = NULL;
  +    memset(&h->sb, 0, sizeof(h->sb));
       h->instance = 0;
  +    h->startoff = 0;
  +    h->endoff = 0;
  +    memset(&h->h_loadops, 0, sizeof(h->h_loadops));
  +    memset(&h->h_getops, 0, sizeof(h->h_getops));
       h->indexAlloced = INDEX_MALLOC_SIZE;
       h->indexUsed = 0;
       h->flags |= HEADERFLAG_SORTED;
  @@ -963,6 +968,7 @@
       dataEnd = dataStart + dl;
   
       h = headerGetPool(_headerPool);
  +    memset(&h->h_loadops, 0, sizeof(h->h_loadops));
       if ((sw = headerGetStats(h, 18)) != NULL)        /* RPMTS_OP_HDRLOAD */
        (void) rpmswEnter(sw, 0);
       {        unsigned char * hmagic = header_magic;
  @@ -972,12 +978,19 @@
       h->blob = uh;
       h->bloblen = pvlen;
       /*...@=assignexpose =kepttr...@*/
  +    h->origin = NULL;
  +    h->baseurl = NULL;
  +    h->digest = NULL;
  +    h->rpmdb = NULL;
  +    memset(&h->sb, 0, sizeof(h->sb));
  +    h->instance = 0;
  +    h->startoff = 0;
  +    h->endoff = (rpmuint32_t) pvlen;
  +    memset(&h->h_getops, 0, sizeof(h->h_getops));
       h->indexAlloced = il + 1;
       h->indexUsed = il;
       h->index = xcalloc(h->indexAlloced, sizeof(*h->index));
       h->flags |= HEADERFLAG_SORTED;
  -    h->startoff = 0;
  -    h->endoff = (rpmuint32_t) pvlen;
       h = headerLink(h);
   assert(h != NULL);
   
  @@ .
______________________________________________________________________
RPM Package Manager                                    http://rpm5.org
CVS Sources Repository                                rpm-cvs@rpm5.org

Reply via email to