RPM Community Forums

Mailing List Message of <rpm-cvs>

[CVS] RPM: rpm/ CHANGES rpm/build/ pack.c rpm/lib/ package.c rpmchecks...

From: Jeff Johnson <jbj@rpm5.org>
Date: Fri 17 Aug 2007 - 07:36:06 CEST
Message-Id: <20070817053606.5BE13348456@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:   17-Aug-2007 07:36:06
  Branch: HEAD                             Handle: 2007081706360302

  Modified files:
    rpm                     CHANGES
    rpm/build               pack.c
    rpm/lib                 package.c rpmchecksig.c signature.c
    rpm/rpmdb               hdrinline.h header.c header.h header_internal.h
                            rpmdb.c

  Log:
    - add getter/setter for header magic to hide _newmagic construction.

  Summary:
    Revision    Changes     Path
    1.1579      +1  -0      rpm/CHANGES
    2.221       +0  -7      rpm/build/pack.c
    2.147       +33 -42     rpm/lib/package.c
    1.128       +7  -21     rpm/lib/rpmchecksig.c
    2.178       +14 -14     rpm/lib/signature.c
    1.12        +28 -0      rpm/rpmdb/hdrinline.h
    1.60        +46 -2      rpm/rpmdb/header.c
    1.21        +24 -0      rpm/rpmdb/header.h
    1.15        +1  -0      rpm/rpmdb/header_internal.h
    1.151       +10 -3      rpm/rpmdb/rpmdb.c
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/CHANGES
  ============================================================================
  $ cvs diff -u -r1.1578 -r1.1579 CHANGES
  --- rpm/CHANGES	16 Aug 2007 20:50:25 -0000	1.1578
  +++ rpm/CHANGES	17 Aug 2007 05:36:03 -0000	1.1579
  @@ -1,4 +1,5 @@
   4.5 -> 5.0:
  +    - jbj: add getter/setter for header magic to hide _newmagic construction.
       - jbj: functional sign/verify on --nolead --newmagic packages.
       - jbj: no-operation code paths for --nolead --nosigh packages.
       - jbj: functional sign/verify on --nolead packages.
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/build/pack.c
  ============================================================================
  $ cvs diff -u -r2.220 -r2.221 pack.c
  --- rpm/build/pack.c	14 Aug 2007 17:35:55 -0000	2.220
  +++ rpm/build/pack.c	17 Aug 2007 05:36:04 -0000	2.221
  @@ -384,13 +384,6 @@
   }
   /*@=boundswrite@*/
   
  -#ifdef	DYING
  -/*@unchecked@*/
  -static unsigned char header_magic[8] = {
  -        0x8e, 0xad, 0xe8, 0x01, 0x00, 0x00, 0x00, 0x00
  -};
  -#endif
  -
   #define	RPMPKGVERSION_MIN	30004
   #define	RPMPKGVERSION_MAX	40003
   /*@unchecked@*/
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/lib/package.c
  ============================================================================
  $ cvs diff -u -r2.146 -r2.147 package.c
  --- rpm/lib/package.c	16 Aug 2007 20:50:26 -0000	2.146
  +++ rpm/lib/package.c	17 Aug 2007 05:36:04 -0000	2.147
  @@ -41,22 +41,6 @@
   
   extern int _nolead;
   extern int _nosigh;
  -extern int _newmagic;
  -
  -/*@unchecked@*/
  -static unsigned char header_magic[8] = {
  -        0x8e, 0xad, 0xe8, 0x01, 0x00, 0x00, 0x00, 0x00
  -};
  -
  -/*@observer@*/ /*@unchecked@*/
  -static unsigned char sigh_magic[8] = {
  -	0x8e, 0xad, 0xe8, 0x3e, 0x00, 0x00, 0x00, 0x00
  -};
  -
  -/*@observer@*/ /*@unchecked@*/
  -static unsigned char meta_magic[8] = {
  -	0x8e, 0xad, 0xe8, 0x3f, 0x00, 0x00, 0x00, 0x00
  -};
   
   /**
    * Alignment needs (and sizeof scalars types) for internal rpm data types.
  @@ -584,10 +568,12 @@
   	(void) rpmswEnter(rpmtsOp(ts, RPMTS_OP_DIGEST), 0);
   	dig->hdrmd5ctx = rpmDigestInit(dig->signature.hash_algo, RPMDIGEST_NONE);
   
  -	b = (unsigned char *) (_newmagic ? meta_magic : header_magic);
  -	nb = sizeof(header_magic);
  -        (void) rpmDigestUpdate(dig->hdrmd5ctx, b, nb);
  -        dig->nbytes += nb;
  +	b = NULL; nb = 0;
  +	(void) headerGetMagic(NULL, &b, &nb);
  +	if (b && nb > 0) {
  +	    (void) rpmDigestUpdate(dig->hdrmd5ctx, b, nb);
  +	    dig->nbytes += nb;
  +	}
   
   	b = (unsigned char *) ildl;
   	nb = sizeof(ildl);
  @@ -628,10 +614,12 @@
   	(void) rpmswEnter(rpmtsOp(ts, RPMTS_OP_DIGEST), 0);
   	dig->hdrsha1ctx = rpmDigestInit(PGPHASHALGO_SHA1, RPMDIGEST_NONE);
   
  -	b = (unsigned char *) (_newmagic ? meta_magic : header_magic);
  -	nb = sizeof(header_magic);
  -        (void) rpmDigestUpdate(dig->hdrsha1ctx, b, nb);
  -        dig->nbytes += nb;
  +	b = NULL; nb = 0;
  +	(void) headerGetMagic(NULL, &b, &nb);
  +	if (b && nb > 0) {
  +	    (void) rpmDigestUpdate(dig->hdrsha1ctx, b, nb);
  +	    dig->nbytes += nb;
  +	}
   
   	b = (unsigned char *) ildl;
   	nb = sizeof(ildl);
  @@ -683,7 +671,8 @@
       int_32 dl;
       int_32 * ei = NULL;
       size_t uc;
  -    int_32 nb;
  +    unsigned char * b;
  +    size_t nb;
       Header h = NULL;
       const char * origin = NULL;
       rpmRC rc = RPMRC_FAIL;		/* assume failure */
  @@ -705,19 +694,13 @@
   	goto exit;
       }
   
  -if (_newmagic) {
  -    if (!(	!memcmp(block, header_magic, sizeof(header_magic))
  -     ||		!memcmp(block, meta_magic, sizeof(meta_magic))
  -    )) {
  +    b = NULL;
  +    nb = 0;
  +    (void) headerGetMagic(NULL, &b, &nb);
  +    if (memcmp(block, b, nb)) {
   	(void) snprintf(buf, sizeof(buf), _("hdr magic: BAD\n"));
   	goto exit;
       }
  -} else {
  -    if (memcmp(block, header_magic, sizeof(header_magic))) {
  -	(void) snprintf(buf, sizeof(buf), _("hdr magic: BAD\n"));
  -	goto exit;
  -    }
  -}
   
   /*@-boundsread@*/
       il = ntohl(block[2]);
  @@ -747,7 +730,7 @@
       ei[1] = block[3];
       if ((xx = timedRead(fd, (char *)&ei[2], nb)) != nb) {
   	(void) snprintf(buf, sizeof(buf),
  -		_("hdr blob(%d): BAD, read returned %d\n"), nb, xx);
  +		_("hdr blob(%u): BAD, read returned %d\n"), (unsigned)nb, xx);
   	goto exit;
       }
   /*@=bounds@*/
  @@ -986,14 +969,18 @@
       {	void * uh = NULL;
   	int_32 uht;
   	int_32 uhc;
  -	unsigned char * hmagic = (_newmagic ? meta_magic : header_magic);
  +	unsigned char * hmagic = NULL;
  +	size_t nmagic = 0;
   
   	if (!headerGetEntry(h, RPMTAG_HEADERIMMUTABLE, &uht, &uh, &uhc))
   	    break;
  +	(void) headerGetMagic(NULL, &hmagic, &nmagic);
   	(void) rpmswEnter(rpmtsOp(ts, RPMTS_OP_DIGEST), 0);
   	dig->hdrmd5ctx = rpmDigestInit(dig->signature.hash_algo, RPMDIGEST_NONE);
  -	(void) rpmDigestUpdate(dig->hdrmd5ctx, hmagic, sizeof(header_magic));
  -	dig->nbytes += sizeof(header_magic);
  +	if (hmagic && nmagic > 0) {
  +	    (void) rpmDigestUpdate(dig->hdrmd5ctx, hmagic, nmagic);
  +	    dig->nbytes += nmagic;
  +	}
   	(void) rpmDigestUpdate(dig->hdrmd5ctx, uh, uhc);
   	dig->nbytes += uhc;
   	(void) rpmswExit(rpmtsOp(ts, RPMTS_OP_DIGEST), dig->nbytes);
  @@ -1015,14 +1002,18 @@
       {	void * uh = NULL;
   	int_32 uht;
   	int_32 uhc;
  -	unsigned char * hmagic = (_newmagic ? meta_magic : header_magic);
  +	unsigned char * hmagic = NULL;
  +	size_t nmagic = 0;
   
   	if (!headerGetEntry(h, RPMTAG_HEADERIMMUTABLE, &uht, &uh, &uhc))
   	    break;
  +	(void) headerGetMagic(NULL, &hmagic, &nmagic);
   	(void) rpmswEnter(rpmtsOp(ts, RPMTS_OP_DIGEST), 0);
   	dig->hdrsha1ctx = rpmDigestInit(PGPHASHALGO_SHA1, RPMDIGEST_NONE);
  -	(void) rpmDigestUpdate(dig->hdrsha1ctx, hmagic, sizeof(header_magic));
  -	dig->nbytes += sizeof(header_magic);
  +	if (hmagic && nmagic > 0) {
  +	    (void) rpmDigestUpdate(dig->hdrsha1ctx, hmagic, nmagic);
  +	    dig->nbytes += nmagic;
  +	}
   	(void) rpmDigestUpdate(dig->hdrsha1ctx, uh, uhc);
   	dig->nbytes += uhc;
   	(void) rpmswExit(rpmtsOp(ts, RPMTS_OP_DIGEST), dig->nbytes);
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/lib/rpmchecksig.c
  ============================================================================
  $ cvs diff -u -r1.127 -r1.128 rpmchecksig.c
  --- rpm/lib/rpmchecksig.c	16 Aug 2007 19:04:48 -0000	1.127
  +++ rpm/lib/rpmchecksig.c	17 Aug 2007 05:36:04 -0000	1.128
  @@ -28,7 +28,6 @@
   
   extern int _nolead;
   extern int _nosigh;
  -extern int _newmagic;
   
   /**
    */
  @@ -661,23 +660,6 @@
       return res;
   }
   
  -/*@unchecked@*/
  -static unsigned char header_magic[8] = {
  -        0x8e, 0xad, 0xe8, 0x01, 0x00, 0x00, 0x00, 0x00
  -};
  -
  -#ifdef	NOTYET
  -/*@observer@*/ /*@unchecked@*/
  -static unsigned char sigh_magic[8] = {
  -	0x8e, 0xad, 0xe8, 0x3e, 0x00, 0x00, 0x00, 0x00
  -};
  -#endif
  -
  -/*@observer@*/ /*@unchecked@*/
  -static unsigned char meta_magic[8] = {
  -	0x8e, 0xad, 0xe8, 0x3f, 0x00, 0x00, 0x00, 0x00
  -};
  -
   /**
    * @todo If the GPG key was known available, the md5 digest could be skipped.
    */
  @@ -702,7 +684,8 @@
   	dig->nbytes += headerSizeof(h);
   
   	if (headerIsEntry(h, RPMTAG_HEADERIMMUTABLE)) {
  -	    unsigned char * hmagic = (_newmagic ? meta_magic : header_magic);
  +	    unsigned char * hmagic = NULL;
  +	    size_t nmagic = 0;
   	    void * uh;
   	    int_32 uht, uhc;
   	
  @@ -713,11 +696,14 @@
   		rpmError(RPMERR_FREAD, _("%s: headerGetEntry failed\n"), fn);
   		goto exit;
   	    }
  +	    (void) headerGetMagic(NULL, &hmagic, &nmagic);
   	    dig->hdrsha1ctx = rpmDigestInit(PGPHASHALGO_SHA1, RPMDIGEST_NONE);
  -	    (void) rpmDigestUpdate(dig->hdrsha1ctx, hmagic, sizeof(header_magic));
  +	    if (hmagic && nmagic > 0)
  +		(void) rpmDigestUpdate(dig->hdrsha1ctx, hmagic, nmagic);
   	    (void) rpmDigestUpdate(dig->hdrsha1ctx, uh, uhc);
   	    dig->hdrmd5ctx = rpmDigestInit(dig->signature.hash_algo, RPMDIGEST_NONE);
  -	    (void) rpmDigestUpdate(dig->hdrmd5ctx, hmagic, sizeof(header_magic));
  +	    if (hmagic && nmagic > 0)
  +		(void) rpmDigestUpdate(dig->hdrmd5ctx, hmagic, nmagic);
   	    (void) rpmDigestUpdate(dig->hdrmd5ctx, uh, uhc);
   	    uh = headerFreeData(uh, uht);
   	}
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/lib/signature.c
  ============================================================================
  $ cvs diff -u -r2.177 -r2.178 signature.c
  --- rpm/lib/signature.c	16 Aug 2007 20:50:26 -0000	2.177
  +++ rpm/lib/signature.c	17 Aug 2007 05:36:04 -0000	2.178
  @@ -143,21 +143,11 @@
   /*@unchecked@*/
   extern int _newmagic;
   
  -/*@unchecked@*/
  -static unsigned char header_magic[8] = {
  -    0x8e, 0xad, 0xe8, 0x01, 0x00, 0x00, 0x00, 0x00
  -};
  -
   /*@observer@*/ /*@unchecked@*/
   static unsigned char sigh_magic[8] = {
   	0x8e, 0xad, 0xe8, 0x3e, 0x00, 0x00, 0x00, 0x00
   };
   
  -/*@observer@*/ /*@unchecked@*/
  -static unsigned char meta_magic[8] = {
  -	0x8e, 0xad, 0xe8, 0x3f, 0x00, 0x00, 0x00, 0x00
  -};
  -
   rpmRC rpmReadSignature(void * _fd, Header * sighp, sigType sig_type,
   		const char ** msg)
   {
  @@ -196,9 +186,14 @@
   		_("sigh size(%d): BAD, read returned %d\n"), (int)sizeof(block), xx);
   	goto exit;
       }
  -    {   unsigned char * hmagic = (_newmagic ? sigh_magic : header_magic);
  +    {   unsigned char * hmagic = NULL;
  +	size_t nmagic = 0;
  +
  +	(void) headerGetMagic(NULL, &hmagic, &nmagic);
  +	if (_newmagic)	/* XXX FIXME: sigh needs its own magic. */
  +	    hmagic = sigh_magic;
   
  -	if (memcmp(block, hmagic, sizeof(header_magic))) {
  +	if (memcmp(block, hmagic, nmagic)) {
   	    (void) snprintf(buf, sizeof(buf),
   		_("sigh magic: BAD\n"));
   	    goto exit;
  @@ -313,6 +308,8 @@
   	goto exit;
       }
       sigh->flags |= HEADERFLAG_ALLOCATED;
  +    if (_newmagic)	/* XXX FIXME: sigh needs its own magic. */
  +	(void) headerSetMagic(sigh, sigh_magic, sizeof(sigh_magic));
   
       {	int sigSize = headerSizeof(sigh);
   	int pad = (8 - (sigSize % 8)) % 8; /* 8-byte pad */
  @@ -698,7 +695,8 @@
   	(void) Fclose(fd);	fd = NULL;
   
   	if (headerIsEntry(h, RPMTAG_HEADERIMMUTABLE)) {
  -	    unsigned char * hmagic = (_newmagic ? meta_magic : header_magic);
  +	    unsigned char * hmagic = NULL;
  +	    size_t nmagic = 0;
   	    DIGEST_CTX ctx;
   	    void * uh;
   	    int_32 uht, uhc;
  @@ -709,8 +707,10 @@
   		h = headerFree(h);
   		goto exit;
   	    }
  +	    (void) headerGetMagic(NULL, &hmagic, &nmagic);
   	    ctx = rpmDigestInit(PGPHASHALGO_SHA1, RPMDIGEST_NONE);
  -	    (void) rpmDigestUpdate(ctx, hmagic, sizeof(header_magic));
  +	    if (hmagic && nmagic > 0)
  +		(void) rpmDigestUpdate(ctx, hmagic, nmagic);
   	    (void) rpmDigestUpdate(ctx, uh, uhc);
   	    (void) rpmDigestFinal(ctx, &SHA1, NULL, 1);
   	    uh = headerFreeData(uh, uht);
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/hdrinline.h
  ============================================================================
  $ cvs diff -u -r1.11 -r1.12 hdrinline.h
  --- rpm/rpmdb/hdrinline.h	2 Aug 2007 17:30:12 -0000	1.11
  +++ rpm/rpmdb/hdrinline.h	17 Aug 2007 05:36:05 -0000	1.12
  @@ -523,6 +523,34 @@
   }
   
   /** \ingroup header
  + * Return header magic.
  + * @param h		header
  + * @param *magicp	magic array
  + * @param *nmagicp	no. bytes of magic
  + * @return		0 always
  + */
  +/*@unused@*/ static inline
  +int headerGetMagic(/*@null@*/ Header h, unsigned char **magicp, size_t *nmagicp)
  +	/*@*/
  +{
  +    return hdrVec->hdrgetmagic(h, magicp, nmagicp);
  +}
  +
  +/** \ingroup header
  + * Store header magic.
  + * @param h		header
  + * @param magic		magic array
  + * @param nmagic	no. bytes of magic
  + * @return		0 always
  + */
  +/*@unused@*/ static inline
  +int headerSetMagic(/*@null@*/ Header h, unsigned char * magic, size_t nmagic)
  +	/*@modifies h @*/
  +{
  +    return hdrVec->hdrsetmagic(h, magic, nmagic);
  +}
  +
  +/** \ingroup header
    * Return header origin (e.g path or URL).
    * @param h		header
    * @return		header origin
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/header.c
  ============================================================================
  $ cvs diff -u -r1.59 -r1.60 header.c
  --- rpm/rpmdb/header.c	3 Aug 2007 17:34:27 -0000	1.59
  +++ rpm/rpmdb/header.c	17 Aug 2007 05:36:05 -0000	1.60
  @@ -224,11 +224,10 @@
   {
       Header h = xcalloc(1, sizeof(*h));
   
  -/*@-boundsread@*/
  +    (void) memcpy(h->magic, header_magic, sizeof(h->magic));
       /*@-assignexpose@*/
       h->hv = *hdrVec;		/* structure assignment */
       /*@=assignexpose@*/
  -/*@=boundsread@*/
       h->blob = NULL;
       h->origin = NULL;
       h->instance = 0;
  @@ -1045,6 +1044,9 @@
       dataEnd = dataStart + dl;
   
       h = xcalloc(1, sizeof(*h));
  +    {	unsigned char * hmagic = (_newmagic ? meta_magic : header_magic);
  +	(void) memcpy(h->magic, hmagic, sizeof(h->magic));
  +    }
       /*@-assignexpose@*/
       h->hv = *hdrVec;		/* structure assignment */
       /*@=assignexpose@*/
  @@ -1197,6 +1199,46 @@
   }
   
   /** \ingroup header
  + * Return header magic.
  + * @param h		header
  + * @param *magicp	magic array
  + * @param *nmagicp	no. bytes of magic
  + * @return		0 always
  + */
  +static
  +int headerGetMagic(/*@null@*/ Header h, unsigned char **magicp, size_t *nmagicp)
  +	/*@*/
  +{
  +    unsigned char * hmagic = (_newmagic ? meta_magic : header_magic);
  +    if (magicp)
  +	*magicp = (h ? h->magic : hmagic);
  +    if (nmagicp)
  +	*nmagicp = (h ? sizeof(h->magic) : sizeof(header_magic));
  +    return 0;
  +}
  +
  +/** \ingroup header
  + * Store header magic.
  + * @param h		header
  + * @param magic		magic array
  + * @param nmagic	no. bytes of magic
  + * @return		0 always
  + */
  +static
  +int headerSetMagic(/*@null@*/ Header h, unsigned char * magic, size_t nmagic)
  +	/*@modifies h @*/
  +{
  +    if (nmagic > sizeof(h->magic))
  +	nmagic = sizeof(h->magic);
  +    if (h) {
  +	memset(h->magic, 0, sizeof(h->magic));
  +	if (nmagic > 0)
  +	    memcpy(h->magic, magic, nmagic);
  +    }
  +    return 0;
  +}
  +
  +/** \ingroup header
    * Return header origin (e.g path or URL).
    * @param h		header
    * @return		header origin
  @@ -4080,6 +4122,8 @@
       headerFreeIterator,
       headerInitIterator,
       headerNextIterator,
  +    headerGetMagic,
  +    headerSetMagic,
       headerGetOrigin,
       headerSetOrigin,
       headerGetInstance,
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/header.h
  ============================================================================
  $ cvs diff -u -r1.20 -r1.21 header.h
  --- rpm/rpmdb/header.h	3 Aug 2007 18:29:54 -0000	1.20
  +++ rpm/rpmdb/header.h	17 Aug 2007 05:36:05 -0000	1.21
  @@ -715,6 +715,28 @@
   	/*@modifies hi, *tag, *type, *p, *c @*/;
   
   /** \ingroup header
  + * Return header magic.
  + * @param h		header
  + * @param *magicp	magic array
  + * @param *nmagicp	no. bytes of magic
  + * @return		0 always
  + */
  +typedef
  +int (*HDRgetmagic)(/*@null@*/ Header h, unsigned char **magicp, size_t *nmagicp)
  +	/*@*/;
  +
  +/** \ingroup header
  + * Store header magic.
  + * @param h		header
  + * @param magic		magic array
  + * @param nmagic	no. bytes of magic
  + * @return		0 always
  + */
  +typedef
  +int (*HDRsetmagic)(/*@null@*/ Header h, unsigned char * magic, size_t nmagic)
  +	/*@modifies h @*/;
  +
  +/** \ingroup header
    * Return header origin (e.g path or URL).
    * @param h		header
    * @return		header origin
  @@ -788,6 +810,8 @@
       HDRfreeiter	hdrfreeiter;
       HDRinititer	hdrinititer;
       HDRnextiter	hdrnextiter;
  +    HDRgetmagic hdrgetmagic;
  +    HDRsetmagic hdrsetmagic;
       HDRgetorigin hdrgetorigin;
       HDRsetorigin hdrsetorigin;
       HDRgetinstance hdrgetinstance;
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/header_internal.h
  ============================================================================
  $ cvs diff -u -r1.14 -r1.15 header_internal.h
  --- rpm/rpmdb/header_internal.h	9 Jun 2007 19:08:00 -0000	1.14
  +++ rpm/rpmdb/header_internal.h	17 Aug 2007 05:36:05 -0000	1.15
  @@ -55,6 +55,7 @@
   struct headerToken_s {
   /*@unused@*/
       struct HV_s hv;		/*!< Header public methods. */
  +    unsigned char magic[8];	/*!< Header magic. */
   /*@only@*/ /*@null@*/
       void * blob;		/*!< Header region blob. */
   /*@only@*/ /*@null@*/
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/rpmdb.c
  ============================================================================
  $ cvs diff -u -r1.150 -r1.151 rpmdb.c
  --- rpm/rpmdb/rpmdb.c	9 Aug 2007 18:45:30 -0000	1.150
  +++ rpm/rpmdb/rpmdb.c	17 Aug 2007 05:36:05 -0000	1.151
  @@ -1807,13 +1807,15 @@
   	DBT * data = &mi->mi_data;
   	sigset_t signalMask;
   	rpmRC rpmrc = RPMRC_NOTFOUND;
  +	size_t nb = 0;
   	int xx;
   
  +	(void) headerGetMagic(mi->mi_h, NULL, &nb);
   /*@i@*/	key->data = (void *) &mi->mi_prevoffset;
   	key->size = sizeof(mi->mi_prevoffset);
   	data->data = headerUnload(mi->mi_h);
   	data->size = headerSizeof(mi->mi_h);
  -	data->size -= 8;	/* XXX HEADER_MAGIC_NO */
  +	data->size -= nb;	/* XXX HEADER_MAGIC_NO */
   
   	/* Check header digest/signature on blob export (if requested). */
   	if (mi->mi_hdrchk && mi->mi_ts) {
  @@ -3086,6 +3088,7 @@
       int dbix;
       union _dbswap mi_offset;
       unsigned int hdrNum = 0;
  +    size_t nb;
       int ret = 0;
       int rc;
       int xx;
  @@ -3137,10 +3140,12 @@
         /*@-branchstate@*/
         if (dbi != NULL) {
   
  +	nb = 0;
  +	(void) headerGetMagic(h, NULL, &nb);
   	/* XXX db0: hack to pass sizeof header to fadAlloc */
   	datap = h;
   	datalen = headerSizeof(h);
  -	datalen -= 8;	/* XXX HEADER_MAGIC_NO */
  +	datalen -= nb;	/* XXX HEADER_MAGIC_NO */
   
   	xx = dbiCopen(dbi, dbi->dbi_txnid, &dbcursor, DB_WRITECURSOR);
   
  @@ -3254,9 +3259,11 @@
   key->data = (void *) &mi_offset;
   /*@=immediatetrans@*/
   key->size = sizeof(mi_offset.ui);
  +nb = 0;
  +(void) headerGetMagic(h, NULL, &nb);
   data->data = headerUnload(h);
   data->size = headerSizeof(h);
  -data->size -= 8;	/* XXX HEADER_MAGIC_NO */
  +data->size -= nb;	/* XXX HEADER_MAGIC_NO */
   
   		/* Check header digest/signature on blob export. */
   		if (hdrchk && ts) {
  @@ .
Received on Fri Aug 17 07:36:06 2007
Driven by Jeff Johnson and the RPM project team.
Hosted by OpenPKG and Ralf S. Engelschall.
Powered by FreeBSD and OpenPKG.