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 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)
/*@globals fileSystem, internalState @*/
- /*@modifies fd, *dig, fileSystem, internalState @*/
+ /*@modifies 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. */
/*@-noeffect@*/
- xx = pgpSetSig(rpmtsDig(ts), 0, 0, NULL, 0);
+ xx = pgpSetSig(dig, 0, 0, NULL, 0);
/*@=noeffect@*/
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
*/
/*@unused@*/ static inline
+void fdSetDig(FD_t fd, pgpDig dig)
+ /*@modifies fd, dig @*/
+{
+ FDSANE(fd);
+ fd->dig = pgpDigFree(fd->dig);
+ fd->dig = pgpDigLink(dig, "fdSetDig");
+}
+
+/** \ingroup rpmio
+ */
+/*@unused@*/ static inline
+/*@null@*/ pgpDig fdGetDig(FD_t fd)
+ /*@*/
+{
+ FDSANE(fd);
+ /*@-retexpose -refcounttrans -usereleased @*/
+ return fd->dig;
+ /*@=retexpose =refcounttrans =usereleased @*/
+}
+
+/** \ingroup rpmio
+ */
+/*@unused@*/ static inline
void fdSetWF(FD_t fd, /*@kept@*/ void * wf)
/*@modifies fd @*/
{
@@ .
Received on Tue Nov 20 20:24:01 2007