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:   20-Nov-2007 20:24:01
  Branch: HEAD                             Handle: 2007112019240001

  Modified files:
    rpm                     CHANGES
    rpm/lib                 rpmchecksig.c
    rpm/rpmio               rpmio_internal.h

  Log:
    - jbj: attach pgpDig to the fd being used to verify signatures.

  Summary:
    Revision    Changes     Path
    1.1854      +1  -0      rpm/CHANGES
    1.187       +6  -5      rpm/lib/rpmchecksig.c
    2.89        +23 -0      rpm/rpmio/rpmio_internal.h
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/CHANGES
  ============================================================================
  $ cvs diff -u -r1.1853 -r1.1854 CHANGES
  --- rpm/CHANGES       20 Nov 2007 18:44:24 -0000      1.1853
  +++ rpm/CHANGES       20 Nov 2007 19:24:00 -0000      1.1854
  @@ -1,4 +1,5 @@
   5.0a2 -> 5.0a3:
  +    - jbj: attach pgpDig to the fd being used to verify signatures.
       - jbj: splint fiddles for refcounted storage.
       - jbj: add refcounts to rpmwf and pgpDig, they're gonna be snarly.
       - jbj: eliminate the headerCheck recursion check. not seen w rpm code 
paths.
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/lib/rpmchecksig.c
  ============================================================================
  $ cvs diff -u -r1.186 -r1.187 rpmchecksig.c
  --- rpm/lib/rpmchecksig.c     20 Nov 2007 19:09:27 -0000      1.186
  +++ rpm/lib/rpmchecksig.c     20 Nov 2007 19:24:00 -0000      1.187
  @@ -780,11 +780,12 @@
   /**
    * @todo If the GPG key was known available, the md5 digest could be skipped.
    */
  -static rpmRC readFile(FD_t fd, const char * fn, pgpDig dig)
  +static rpmRC readFile(FD_t fd, const char * fn)
        /[EMAIL PROTECTED] fileSystem, internalState @*/
  -     /[EMAIL PROTECTED] fd, *dig, fileSystem, internalState @*/
  +     /[EMAIL PROTECTED] fd, fileSystem, internalState @*/
   {
   rpmwf wf = fdGetWF(fd);
  +pgpDig dig = fdGetDig(fd);
       HGE_t hge = headerGetExtension;
       HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
       unsigned char buf[4*BUFSIZ];
  @@ -964,7 +965,7 @@
        }
   
        dig = rpmtsDig(ts);
  -assert(dig != NULL);
  +     (void) fdSetDig(fd, dig);
        sigp = pgpGetSignature(dig);
   
        /* XXX RSA needs the hash_algo, so decode early. */
  @@ -980,7 +981,7 @@
   
        /* Read the file, generating digest(s) on the fly. */
        if (dig == NULL || sigp == NULL
  -      || readFile(fd, fn, dig) != RPMRC_OK)
  +      || readFile(fd, fn) != RPMRC_OK)
        {
            res++;
            goto exit;
  @@ -1106,7 +1107,7 @@
        hi = headerFreeIterator(hi);
        /* XXX clear the already free'd signature data. */
   /[EMAIL PROTECTED]@*/
  -     xx = pgpSetSig(rpmtsDig(ts), 0, 0, NULL, 0);
  +     xx = pgpSetSig(dig, 0, 0, NULL, 0);
   /[EMAIL PROTECTED]@*/
   
        res += res2;
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/rpmio_internal.h
  ============================================================================
  $ cvs diff -u -r2.88 -r2.89 rpmio_internal.h
  --- rpm/rpmio/rpmio_internal.h        20 Nov 2007 18:44:25 -0000      2.88
  +++ rpm/rpmio/rpmio_internal.h        20 Nov 2007 19:24:01 -0000      2.89
  @@ -322,6 +322,29 @@
   /** \ingroup rpmio
    */
   /[EMAIL PROTECTED]@*/ static inline
  +void fdSetDig(FD_t fd, pgpDig dig)
  +     /[EMAIL PROTECTED] fd, dig @*/
  +{
  +    FDSANE(fd);
  +    fd->dig = pgpDigFree(fd->dig);
  +    fd->dig = pgpDigLink(dig, "fdSetDig");
  +}
  +
  +/** \ingroup rpmio
  + */
  +/[EMAIL PROTECTED]@*/ static inline
  +/[EMAIL PROTECTED]@*/ pgpDig fdGetDig(FD_t fd)
  +     /[EMAIL PROTECTED]/
  +{
  +    FDSANE(fd);
  +    /[EMAIL PROTECTED] -refcounttrans -usereleased @*/
  +    return fd->dig;
  +    /[EMAIL PROTECTED] =refcounttrans =usereleased @*/
  +}
  +
  +/** \ingroup rpmio
  + */
  +/[EMAIL PROTECTED]@*/ static inline
   void fdSetWF(FD_t fd, /[EMAIL PROTECTED]@*/ void * wf)
        /[EMAIL PROTECTED] fd @*/
   {
  @@ .
______________________________________________________________________
RPM Package Manager                                    http://rpm5.org
CVS Sources Repository                                rpm-cvs@rpm5.org

Reply via email to