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: 08-Oct-2007 08:50:02
Branch: HEAD Handle: 2007100807500200
Modified files:
rpm CHANGES
rpm/rpmdb header.c
Log:
- headerGetExtension: handle lookup failure cases too.
- headerGetExtension: include \0 when dup'ing string.
Summary:
Revision Changes Path
1.1662 +2 -0 rpm/CHANGES
1.70 +3 -4 rpm/rpmdb/header.c
____________________________________________________________________________
patch -p0 <<'@@ .'
Index: rpm/CHANGES
============================================================================
$ cvs diff -u -r1.1661 -r1.1662 CHANGES
--- rpm/CHANGES 8 Oct 2007 05:00:52 -0000 1.1661
+++ rpm/CHANGES 8 Oct 2007 06:50:02 -0000 1.1662
@@ -1,4 +1,6 @@
4.5 -> 5.0:
+ - jbj: headerGetExtension: handle lookup failure cases too.
+ - jbj: headerGetExtension: include \0 when dup'ing string.
- jbj: start converting rpmdb.c to use headerGetExtension instead.
- jbj: expose hRET_t through headerGetExtension prototypes.
- jbj: unbork/simplify hRET_t indirections, too much acid in the
Kool-Aid.
@@ .
patch -p0 <<'@@ .'
Index: rpm/rpmdb/header.c
============================================================================
$ cvs diff -u -r1.69 -r1.70 header.c
--- rpm/rpmdb/header.c 7 Oct 2007 18:58:33 -0000 1.69
+++ rpm/rpmdb/header.c 8 Oct 2007 06:50:02 -0000 1.70
@@ -1853,7 +1853,7 @@
else
rc = intGetEntry(h, he->tag, he->t, (hPTR_t *)he->p, he->c, 0);
- if (he->p && !he->freeData)
+ if (rc && he->p && !he->freeData)
switch (*he->t) {
case RPM_NULL_TYPE:
case RPM_OPENPGP_TYPE: /* XXX W2DO? */
@@ -1864,7 +1864,6 @@
break;
case RPM_CHAR_TYPE:
case RPM_INT8_TYPE:
-assert(0); /* XXX stop unimplemented oversights. */
nb = he_c * sizeof(*he_p.i8p);
break;
case RPM_INT16_TYPE:
@@ -1881,13 +1880,13 @@
break;
case RPM_I18NSTRING_TYPE:
case RPM_STRING_TYPE:
- nb = strlen(he_p.str);
+ nb = strlen(he_p.str) + 1;
break;
case RPM_STRING_ARRAY_TYPE:
break;
}
- if (p)
+ if (rc && p)
p->ptr = ((nb > 0)
? memcpy(xmalloc(nb), he_p.ptr, nb) : he_p.ptr);
@@ .
______________________________________________________________________
RPM Package Manager http://rpm5.org
CVS Sources Repository [email protected]