RPM Community Forums

Mailing List Message of <rpm-cvs>

[CVS] RPM: rpm/ CHANGES rpm/lib/ package.c rpmchecksig.c rpm/rpmdb/ li...

From: Jeff Johnson <jbj@rpm5.org>
Date: Tue 20 Nov 2007 - 22:45:23 CET
Message-Id: <20071120214523.6E55B34845C@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:   20-Nov-2007 22:45:23
  Branch: HEAD                             Handle: 2007112021452201

  Modified files:
    rpm                     CHANGES
    rpm/lib                 package.c rpmchecksig.c
    rpm/rpmdb               librpmdb.vers pkgio.c pkgio.h

  Log:
    - bury rpmReadHeader underneath rpmpkgRead("Header", ...).

  Summary:
    Revision    Changes     Path
    1.1856      +1  -0      rpm/CHANGES
    2.188       +10 -9      rpm/lib/package.c
    1.189       +1  -1      rpm/lib/rpmchecksig.c
    1.28        +0  -1      rpm/rpmdb/librpmdb.vers
    1.45        +17 -6      rpm/rpmdb/pkgio.c
    1.11        +0  -13     rpm/rpmdb/pkgio.h
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/CHANGES
  ============================================================================
  $ cvs diff -u -r1.1855 -r1.1856 CHANGES
  --- rpm/CHANGES	20 Nov 2007 19:48:58 -0000	1.1855
  +++ rpm/CHANGES	20 Nov 2007 21:45:22 -0000	1.1856
  @@ -1,4 +1,5 @@
   5.0a2 -> 5.0a3:
  +    - jbj: bury rpmReadHeader underneath rpmpkgRead("Header", ...).
       - jbj: use the fd attached pgpDig everywhere necessary.
       - jbj: attach pgpDig to the fd being used to verify signatures.
       - jbj: splint fiddles for refcounted storage.
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/lib/package.c
  ============================================================================
  $ cvs diff -u -r2.187 -r2.188 package.c
  --- rpm/lib/package.c	20 Nov 2007 19:48:59 -0000	2.187
  +++ rpm/lib/package.c	20 Nov 2007 21:45:22 -0000	2.188
  @@ -203,7 +203,16 @@
       }
   /*@-type@*/	/* XXX arrow access of non-pointer (FDSTAT_t) */
       nb = -fd->stats->ops[FDSTAT_READ].bytes;
  -    rc = rpmReadHeader(dig, fd, &h, &msg);
  +    {	const char item[] = "Header";
  +	msg = NULL;
  +	rc = rpmpkgRead(item, fd, &h, msg);
  +        if (rc != RPMRC_OK) {
  +            rpmlog(RPMLOG_ERR, "%s: %s: %s\n", fn, item, msg);
  +            msg = _free(msg);
  +            goto exit;
  +        }
  +        msg = _free(msg);
  +    }
       nb += fd->stats->ops[FDSTAT_READ].bytes;
   /*@=type@*/
       if (opx > 0 && op != NULL) {
  @@ -211,14 +220,6 @@
   	op = NULL;
       }
   
  -    if (rc != RPMRC_OK || h == NULL) {
  -	rpmlog(RPMLOG_ERR, _("%s: headerRead failed: %s"), fn,
  -		(msg && *msg ? msg : "\n"));
  -	msg = _free(msg);
  -	goto exit;
  -    }
  -    msg = _free(msg);
  -
       /* Any digests or signatures to check? */
       if (she->tag == 0) {
   	rc = RPMRC_OK;
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/lib/rpmchecksig.c
  ============================================================================
  $ cvs diff -u -r1.188 -r1.189 rpmchecksig.c
  --- rpm/lib/rpmchecksig.c	20 Nov 2007 19:48:59 -0000	1.188
  +++ rpm/lib/rpmchecksig.c	20 Nov 2007 21:45:22 -0000	1.189
  @@ -800,7 +800,7 @@
       {	Header h = NULL;
   	const char item[] = "Header";
   	const char * msg = NULL;
  -	rc = rpmReadHeader(dig, fd, &h, &msg);
  +	rc = rpmpkgRead(item, fd, &h, msg);
   	if (rc != RPMRC_OK) {
   	    rpmlog(RPMLOG_ERR, "%s: %s: %s\n", fn, item, msg);
   	    msg = _free(msg);
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/librpmdb.vers
  ============================================================================
  $ cvs diff -u -r1.27 -r1.28 librpmdb.vers
  --- rpm/rpmdb/librpmdb.vers	13 Nov 2007 01:07:09 -0000	1.27
  +++ rpm/rpmdb/librpmdb.vers	20 Nov 2007 21:45:23 -0000	1.28
  @@ -86,7 +86,6 @@
       rpmpkgRead;
       rpmpkgSizeof;
       rpmpkgWrite;
  -    rpmReadHeader;
       rpm_mergesort;
       rpmTagTable;
       rpmTagTableSize;
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/pkgio.c
  ============================================================================
  $ cvs diff -u -r1.44 -r1.45 pkgio.c
  --- rpm/rpmdb/pkgio.c	20 Nov 2007 18:44:24 -0000	1.44
  +++ rpm/rpmdb/pkgio.c	20 Nov 2007 21:45:23 -0000	1.45
  @@ -1122,11 +1122,20 @@
       return rc;
   }
   
  -/*@-mustmod@*/	/* _fd is modified */
  -rpmRC rpmReadHeader(pgpDig dig, void * _fd, Header *hdrp, const char ** msg)
  +/** 
  + * Return checked and loaded header.
  + * @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
  + */
  +static rpmRC rpmReadHeader(FD_t fd, Header *hdrp, const char ** msg)
  +        /*@globals fileSystem, internalState @*/
  +        /*@modifies dig, *_fd, *hdrp, *msg, fileSystem, internalState @*/
   {
  -    FD_t fd = _fd;
  -rpmwf wf = fdGetWF(fd);
  +    rpmwf wf = fdGetWF(fd);
  +    pgpDig dig = fdGetDig(fd);
       char buf[BUFSIZ];
       uint32_t block[4];
       uint32_t il;
  @@ -1140,6 +1149,7 @@
       rpmRC rc = RPMRC_FAIL;		/* assume failure */
       int xx;
   
  +assert(dig != NULL);
       buf[0] = '\0';
   
       if (hdrp)
  @@ -1233,7 +1243,6 @@
   
       return rc;
   }
  -/*@=mustmod@*/
   
   /**
    * Read metadata header.
  @@ -1260,7 +1269,9 @@
       if ((rc = rpmwfPullXAR(wf, "Header")) != RPMRC_OK) return rc;
       h = headerLoad(wf->h);
   } else {
  -    h = headerRead(fd);
  +    rc = rpmReadHeader(fd, &h, msg);
  +    if (rc != RPMRC_OK)
  +	return rc;
   }
       if (h == NULL) {
   	if (msg)
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/pkgio.h
  ============================================================================
  $ cvs diff -u -r1.10 -r1.11 pkgio.h
  --- rpm/rpmdb/pkgio.h	19 Nov 2007 22:22:09 -0000	1.10
  +++ rpm/rpmdb/pkgio.h	20 Nov 2007 21:45:23 -0000	1.11
  @@ -34,19 +34,6 @@
   	/*@globals fileSystem, internalState @*/
   	/*@modifies dig, *msg, fileSystem, internalState @*/;
   
  -/** 
  - * Return checked and loaded header.
  - * @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(pgpDig dig, void * _fd, /*@out@*/ Header *hdrp,
  -		/*@out@*/ /*@null@*/ const char ** msg)
  -        /*@globals fileSystem, internalState @*/
  -        /*@modifies dig, *_fd, *hdrp, *msg, fileSystem, internalState @*/;
  -
   /**
    * Return size of item in bytes.
    * @param fn		item name
  @@ .
Received on Tue Nov 20 22:45:23 2007
Driven by Jeff Johnson and the RPM project team.
Hosted by OpenPKG and Ralf S. Engelschall.
Powered by FreeBSD and OpenPKG.