RPM Community Forums

Mailing List Message of <rpm-cvs>

[CVS] RPM: rpm/ CHANGES rpm/rpmdb/ header.c

From: Jeff Johnson <jbj@rpm5.org>
Date: Thu 11 Oct 2007 - 16:45:39 CEST
Message-Id: <20071011144539.59281348455@rpm5.org>
  RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  ____________________________________________________________________________

  Server: rpm5.org                         Name:   Jeff Johnson
  Root:   /v/rpm/cvs                       Email:  jbj@rpm5.org
  Module: rpm                              Date:   11-Oct-2007 16:45:39
  Branch: HEAD                             Handle: 2007101115453801

  Modified files:
    rpm                     CHANGES
    rpm/rpmdb               header.c

  Log:
    - fix: headerGetExtension failed to return p.str correctly.

  Summary:
    Revision    Changes     Path
    1.1665      +1  -0      rpm/CHANGES
    1.71        +11 -4      rpm/rpmdb/header.c
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/CHANGES
  ============================================================================
  $ cvs diff -u -r1.1664 -r1.1665 CHANGES
  --- rpm/CHANGES	11 Oct 2007 13:04:25 -0000	1.1664
  +++ rpm/CHANGES	11 Oct 2007 14:45:38 -0000	1.1665
  @@ -1,4 +1,5 @@
   4.5 -> 5.0:
  +    - jbj: fix: headerGetExtension failed to return p.str correctly.
       - jbj: start eliminating rpmError.
       - jbj: fail empty and non-printable manifests.
       - jbj: headerGetExtension: handle lookup failure cases too.
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/header.c
  ============================================================================
  $ cvs diff -u -r1.70 -r1.71 header.c
  --- rpm/rpmdb/header.c	8 Oct 2007 06:50:02 -0000	1.70
  +++ rpm/rpmdb/header.c	11 Oct 2007 14:45:39 -0000	1.71
  @@ -1853,7 +1853,9 @@
       else
   	rc = intGetEntry(h, he->tag, he->t, (hPTR_t *)he->p, he->c, 0);
   
  -    if (rc && he->p && !he->freeData)
  +    if (!rc)
  +	goto exit;
  +
       switch (*he->t) {
       case RPM_NULL_TYPE:
       case RPM_OPENPGP_TYPE:	/* XXX W2DO? */
  @@ -1886,12 +1888,17 @@
   	break;
       }
   
  -    if (rc && p)
  -	p->ptr = ((nb > 0)
  -		? memcpy(xmalloc(nb), he_p.ptr, nb) : he_p.ptr);
  +    /* Allocate all returned storage (if not already). */
  +    if (p && nb && !he->freeData) {
  +	void * ptr = memcpy(xmalloc(nb), he_p.ptr, nb);
  +	he_p.ptr = ptr;
  +    }
   
  +exit:
       if (type)
   	*type = *he->t;
  +    if (p)
  +	p->ptr = he_p.ptr;
       if (c)
   	*c = *he->c;
   
  @@ .
Received on Thu Oct 11 16:45:39 2007
Driven by Jeff Johnson and the RPM project team.
Hosted by OpenPKG and Ralf S. Engelschall.
Powered by FreeBSD and OpenPKG.