RPM Community Forums

Mailing List Message of <rpm-cvs>

[CVS] RPM: rpm/ CHANGES rpm/lib/ package.c rpm/rpmdb/ pkgio.c pkgio.h ...

From: Jeff Johnson <jbj@rpm5.org>
Date: Mon 19 Nov 2007 - 22:50:18 CET
Message-Id: <20071119215018.CCB7A34845D@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:   19-Nov-2007 22:50:18
  Branch: HEAD                             Handle: 2007111921501701

  Modified files:
    rpm                     CHANGES
    rpm/lib                 package.c
    rpm/rpmdb               pkgio.c pkgio.h rpmdb.c
    rpm/rpmio               rpmpgp.h

  Log:
    - eliminate the headerCheck recursion check. not seen w rpm code paths.
    - pass dig, not ts, through pkgio.c header routines.

  Summary:
    Revision    Changes     Path
    1.1851      +2  -0      rpm/CHANGES
    2.186       +1  -1      rpm/lib/package.c
    1.41        +3  -14     rpm/rpmdb/pkgio.c
    1.9         +6  -6      rpm/rpmdb/pkgio.h
    1.214       +7  -5      rpm/rpmdb/rpmdb.c
    2.54        +14 -14     rpm/rpmio/rpmpgp.h
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/CHANGES
  ============================================================================
  $ cvs diff -u -r1.1850 -r1.1851 CHANGES
  --- rpm/CHANGES	19 Nov 2007 20:55:11 -0000	1.1850
  +++ rpm/CHANGES	19 Nov 2007 21:50:17 -0000	1.1851
  @@ -1,4 +1,6 @@
   5.0a2 -> 5.0a3:
  +    - jbj: eliminate the headerCheck recursion check. not seen w rpm code paths.
  +    - jbj: pass dig, not ts, through pkgio.c header routines.
       - jbj: eliminate 2 of 3 remaining uses of headerWrite.
       - jbj: fix: initialize _nolead to 0, not 1.
       - jbj: add "struct utimbuf" and "struct utsname" to eliminate perl wanings.
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/lib/package.c
  ============================================================================
  $ cvs diff -u -r2.185 -r2.186 package.c
  --- rpm/lib/package.c	19 Nov 2007 20:55:12 -0000	2.185
  +++ rpm/lib/package.c	19 Nov 2007 21:50:18 -0000	2.186
  @@ -200,7 +200,7 @@
       }
   /*@-type@*/	/* XXX arrow access of non-pointer (FDSTAT_t) */
       nb = -fd->stats->ops[FDSTAT_READ].bytes;
  -    rc = rpmReadHeader(ts, fd, &h, &msg);
  +    rc = rpmReadHeader(dig, fd, &h, &msg);
       nb += fd->stats->ops[FDSTAT_READ].bytes;
   /*@=type@*/
       if (opx > 0 && op != NULL) {
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/pkgio.c
  ============================================================================
  $ cvs diff -u -r1.40 -r1.41 pkgio.c
  --- rpm/rpmdb/pkgio.c	19 Nov 2007 20:55:12 -0000	1.40
  +++ rpm/rpmdb/pkgio.c	19 Nov 2007 21:50:18 -0000	1.41
  @@ -784,9 +784,8 @@
    * @retval *msg		signature verification msg
    * @return		RPMRC_OK/RPMRC_NOTFOUND/RPMRC_FAIL
    */
  -rpmRC headerCheck(rpmts ts, const void * uh, size_t uc, const char ** msg)
  +rpmRC headerCheck(pgpDig dig, const void * uh, size_t uc, const char ** msg)
   {
  -    pgpDig dig = rpmtsDig(ts);
       char buf[8*BUFSIZ];
       uint32_t * ei = (uint32_t *) uh;
       uint32_t il = (uint32_t) ntohl(ei[0]);
  @@ -811,9 +810,7 @@
       rpmRC rc = RPMRC_FAIL;	/* assume failure */
       int xx;
       uint32_t i;
  -    static int hclvl;
   
  -    hclvl++;
       buf[0] = '\0';
   
       /* Is the blob the right size? */
  @@ -945,7 +942,6 @@
       if (rc != RPMRC_NOTFOUND) {
   	buf[sizeof(buf)-1] = '\0';
   	if (msg) *msg = xstrdup(buf);
  -	hclvl--;
   	return rc;
       }
   
  @@ -964,7 +960,6 @@
   	}
   	buf[sizeof(buf)-1] = '\0';
   	if (msg) *msg = xstrdup(buf);
  -	hclvl--;
   	return rc;
       }
   
  @@ -989,7 +984,6 @@
   	    rpmlog(RPMLOG_ERR,
   		_("skipping header with unverifiable V%u signature\n"),
   		(unsigned) dig->signature.version);
  -	    rpmtsCleanDig(ts);
   	    rc = RPMRC_FAIL;
   	    goto exit;
   	}
  @@ -1033,7 +1027,6 @@
   	    rpmlog(RPMLOG_ERR,
   		_("skipping header with unverifiable V%u signature\n"),
   		(unsigned) dig->signature.version);
  -	    rpmtsCleanDig(ts);
   	    rc = RPMRC_FAIL;
   	    goto exit;
   	}
  @@ -1082,10 +1075,6 @@
       buf[sizeof(buf)-1] = '\0';
       if (msg) *msg = xstrdup(buf);
   
  -    /* XXX headerCheck can recurse, free info only at top level. */
  -    if (hclvl == 1)
  -	rpmtsCleanDig(ts);
  -    hclvl--;
       return rc;
   }
   
  @@ -1130,7 +1119,7 @@
   }
   
   /*@-mustmod@*/	/* _fd is modified */
  -rpmRC rpmReadHeader(rpmts ts, void * _fd, Header *hdrp, const char ** msg)
  +rpmRC rpmReadHeader(pgpDig dig, void * _fd, Header *hdrp, const char ** msg)
   {
       FD_t fd = _fd;
   rpmwf wf = fdGetWF(fd);
  @@ -1209,7 +1198,7 @@
   }
   
       /* Sanity check header tags */
  -    rc = headerCheck(ts, ei, uc, msg);
  +    rc = headerCheck(dig, ei, uc, msg);
       if (rc != RPMRC_OK)
   	goto exit;
   
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/pkgio.h
  ============================================================================
  $ cvs diff -u -r1.8 -r1.9 pkgio.h
  --- rpm/rpmdb/pkgio.h	14 Nov 2007 01:17:52 -0000	1.8
  +++ rpm/rpmdb/pkgio.h	19 Nov 2007 21:50:18 -0000	1.9
  @@ -23,29 +23,29 @@
    * header-only digest or signature to verify the blob. If found,
    * the digest or signature is verified.
    *
  - * @param ts		transaction set
  + * @param dig		signature parameters container
    * @param uh		unloaded header blob
    * @param uc		no. of bytes in blob (or 0 to disable)
    * @retval *msg		verification error message (or NULL)
    * @return		RPMRC_OK on success
    */
  -rpmRC headerCheck(rpmts ts, const void * uh, size_t uc,
  +rpmRC headerCheck(pgpDig dig, const void * uh, size_t uc,
   		/*@out@*/ /*@null@*/ const char ** msg)
   	/*@globals fileSystem, internalState @*/
  -	/*@modifies ts, *msg, fileSystem, internalState @*/;
  +	/*@modifies dig, *msg, fileSystem, internalState @*/;
   
   /** 
    * Return checked and loaded header.
  - * @param ts		transaction set
  + * @param dig		signature parameters container
    * @param _fd		file handle
    * @retval hdrp		address of header (or NULL)
    * @retval *msg		verification error message (or NULL)
    * @return		RPMRC_OK on success
    */
  -rpmRC rpmReadHeader(rpmts ts, void * _fd, /*@out@*/ Header *hdrp,
  +rpmRC rpmReadHeader(pgpDig dig, void * _fd, /*@out@*/ Header *hdrp,
   		/*@out@*/ /*@null@*/ const char ** msg)
           /*@globals fileSystem, internalState @*/
  -        /*@modifies ts, *_fd, *hdrp, *msg, fileSystem, internalState @*/;
  +        /*@modifies dig, *_fd, *hdrp, *msg, fileSystem, internalState @*/;
   
   /**
    * Return size of item in bytes.
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/rpmdb.c
  ============================================================================
  $ cvs diff -u -r1.213 -r1.214 rpmdb.c
  --- rpm/rpmdb/rpmdb.c	19 Nov 2007 18:57:59 -0000	1.213
  +++ rpm/rpmdb/rpmdb.c	19 Nov 2007 21:50:18 -0000	1.214
  @@ -20,13 +20,12 @@
   #define	_RPMEVR_INTERNAL	/* XXX isInstallPrereq */
   #include <rpmevr.h>
   
  -#ifdef	NOTYET
  +/* XXX avoid including <rpmts.h> */
   /*@exposed@*/
   extern pgpDig rpmtsDig(void * ts)
           /*@*/;
   extern void rpmtsCleanDig(void * ts)
           /*@modifies ts @*/;
  -#endif
   
   #define	_RPMDB_INTERNAL
   #include "rpmdb.h"
  @@ -1870,7 +1869,8 @@
   	    int lvl;
   
   assert(data->data != NULL);
  -	    rpmrc = headerCheck(mi->mi_ts, data->data, data->size, &msg);
  +	    rpmrc = headerCheck(rpmtsDig(mi->mi_ts), data->data, data->size, &msg);
  +	    rpmtsCleanDig(mi->mi_ts);
   	    lvl = (rpmrc == RPMRC_FAIL ? RPMLOG_ERR : RPMLOG_DEBUG);
   	    rpmlog(lvl, "%s h#%8u %s",
   		(rpmrc == RPMRC_FAIL ? _("miFreeHeader: skipping") : "write"),
  @@ -2441,7 +2441,8 @@
   	    int lvl;
   
   assert(data->data != NULL);
  -	    rpmrc = headerCheck(mi->mi_ts, uh, uhlen, &msg);
  +	    rpmrc = headerCheck(rpmtsDig(mi->mi_ts), uh, uhlen, &msg);
  +	    rpmtsCleanDig(mi->mi_ts);
   	    lvl = (rpmrc == RPMRC_FAIL ? RPMLOG_ERR : RPMLOG_DEBUG);
   	    rpmlog(lvl, "%s h#%8u %s",
   		(rpmrc == RPMRC_FAIL ? _("rpmdbNextIterator: skipping") : " read"),
  @@ -3309,7 +3310,8 @@
   		    int lvl;
   
   assert(data->data != NULL);
  -		    rpmrc = headerCheck(ts, data->data, data->size, &msg);
  +		    rpmrc = headerCheck(rpmtsDig(ts), data->data, data->size, &msg);
  +		    rpmtsCleanDig(ts);
   		    lvl = (rpmrc == RPMRC_FAIL ? RPMLOG_ERR : RPMLOG_DEBUG);
   		    rpmlog(lvl, "%s h#%8u %s",
   			(rpmrc == RPMRC_FAIL ? _("rpmdbAdd: skipping") : "  +++"),
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/rpmpgp.h
  ============================================================================
  $ cvs diff -u -r2.53 -r2.54 rpmpgp.h
  --- rpm/rpmio/rpmpgp.h	15 Nov 2007 14:30:26 -0000	2.53
  +++ rpm/rpmio/rpmpgp.h	19 Nov 2007 21:50:18 -0000	2.54
  @@ -1367,14 +1367,14 @@
   
   /**
    * Release (malloc'd) data from container.
  - * @param dig		container
  + * @param dig		signature parameters container
    */
   void pgpCleanDig(/*@null@*/ pgpDig dig)
   	/*@modifies dig @*/;
   
   /**
    * Destroy a container for parsed OpenPGP packates.
  - * @param dig		container
  + * @param dig		signature parameters container
    * @return		NULL always
    */
   /*@only@*/ /*@null@*/
  @@ -1383,7 +1383,7 @@
   
   /**
    * Return OpenPGP pubkey parameters.
  - * @param dig		container
  + * @param dig		signature parameters container
    * @return		pubkey parameters
    */
   /*@exposed@*/
  @@ -1392,7 +1392,7 @@
   
   /**
    * Return OpenPGP signature parameters.
  - * @param dig		container
  + * @param dig		signature parameters container
    * @return		signature parameters
    */
   /*@exposed@*/
  @@ -1401,7 +1401,7 @@
   
   /**
    * Get signature tag.
  - * @param dig		container
  + * @param dig		signature parameters container
    * @return		signature tag
    */
   uint32_t pgpGetSigtag(const pgpDig dig)
  @@ -1409,7 +1409,7 @@
   
   /** \ingroup rpmts
    * Get signature tag type.
  - * @param dig		container
  + * @param dig		signature parameters container
    * @param ts		transaction set
    * @return		signature tag type
    */
  @@ -1418,7 +1418,7 @@
   
   /**
    * Get signature tag data, i.e. from header.
  - * @param dig		container
  + * @param dig		signature parameters container
    * @return		signature tag data
    */
   /*@observer@*/ /*@null@*/
  @@ -1427,7 +1427,7 @@
   
   /**
    * Get signature tag data length, i.e. no. of bytes of data.
  - * @param dig		container
  + * @param dig		signature parameters container
    * @return		signature tag data length
    */
   uint32_t pgpGetSiglen(const pgpDig dig)
  @@ -1435,7 +1435,7 @@
   
   /**
    * Set signature tag info, i.e. from header.
  - * @param dig		container
  + * @param dig		signature parameters container
    * @param sigtag	signature tag
    * @param sigtype	signature tag type
    * @param sig		signature tag data
  @@ -1449,7 +1449,7 @@
   
   /**
    * Return pgpDig container accumulator structure.
  - * @param dig		container
  + * @param dig		signature parameters container
    * @param opx		per-container accumulator index (aka rpmtsOpX)
    * @return		per-container accumulator pointer
    */
  @@ -1458,7 +1458,7 @@
   
   /**
    * Get verify signatures flag(s).
  - * @param dig		container
  + * @param dig		signature parameters container
    * @return		verify signatures flags
    */
   pgpVSFlags pgpGetVSFlags(pgpDig dig)
  @@ -1466,7 +1466,7 @@
   
   /**
    * Set verify signatures flag(s).
  - * @param dig		container
  + * @param dig		signature parameters container
    * @param vsflags	new verify signatures flags
    * @return		previous value
    */
  @@ -1475,7 +1475,7 @@
   
   /**
    * Set find pubkey vector.
  - * @param dig		container
  + * @param dig		signature parameters container
    * @param findPubkey	routine to find a pubkey.
    * @param ts		argument to (*findPubkey) (ts)
    * @return		0 always
  @@ -1487,7 +1487,7 @@
   
   /**
    * Call find pubkey vector.
  - * @param dig		container
  + * @param dig		signature parameters container
    * @return		rpmRC return code
    */
   int pgpFindPubkey(pgpDig dig)
  @@ .
Received on Mon Nov 19 22:50:18 2007
Driven by Jeff Johnson and the RPM project team.
Hosted by OpenPKG and Ralf S. Engelschall.
Powered by FreeBSD and OpenPKG.