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