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: 13-Nov-2007 02:07:09 Branch: HEAD Handle: 2007111301070801 Modified files: rpm CHANGES rpm/lib rpmchecksig.c rpm/rpmdb librpmdb.vers Log: - functional -Kvv *.xar header SHA1 and header+payload MD5 verify. Summary: Revision Changes Path 1.1817 +1 -0 rpm/CHANGES 1.174 +18 -0 rpm/lib/rpmchecksig.c 1.27 +2 -0 rpm/rpmdb/librpmdb.vers ____________________________________________________________________________ patch -p0 <<'@@ .' Index: rpm/CHANGES ============================================================================ $ cvs diff -u -r1.1816 -r1.1817 CHANGES --- rpm/CHANGES 13 Nov 2007 00:34:11 -0000 1.1816 +++ rpm/CHANGES 13 Nov 2007 01:07:08 -0000 1.1817 @@ -1,4 +1,5 @@ 5.0a1 -> 5.0a2: + - jbj: functional -Kvv *.xar header SHA1 and header+payload MD5 verify. - jbj: eliminate all but 1 of the memory leaks with -Kvv *.xar. - jbj: add he->signature tagTypeValidate disabler, sigtags no workie. - jbj: add (tenative) patch to handle cached chroot paths. @@ . patch -p0 <<'@@ .' Index: rpm/lib/rpmchecksig.c ============================================================================ $ cvs diff -u -r1.173 -r1.174 rpmchecksig.c --- rpm/lib/rpmchecksig.c 13 Nov 2007 00:34:11 -0000 1.173 +++ rpm/lib/rpmchecksig.c 13 Nov 2007 01:07:08 -0000 1.174 @@ -15,7 +15,13 @@ #include "rpmdb.h" #include "rpmgi.h" +#ifdef WITH_XAR +#include "xar.h" +#endif +#define _RPMWF_INTERNAL +#include <rpmwf.h> #include <pkgio.h> + #include "signature.h" #include "debug.h" @@ -779,6 +785,7 @@ /[EMAIL PROTECTED] fileSystem, internalState @*/ /[EMAIL PROTECTED] fd, *dig, fileSystem, internalState @*/ { +rpmwf wf = fdGetWF(fd); HGE_t hge = headerGetExtension; HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he)); unsigned char buf[4*BUFSIZ]; @@ -828,6 +835,7 @@ h = headerFree(h); } +if (wf == NULL) { /* Read the payload from the package. */ while ((count = Fread(buf, sizeof(buf[0]), sizeof(buf), fd)) > 0) dig->nbytes += count; @@ -835,6 +843,7 @@ rpmlog(RPMLOG_ERR, _("%s: Fread failed: %s\n"), fn, Fstrerror(fd)); goto exit; } +} /* XXX Steal the digest-in-progress from the file handle. */ for (i = fd->ndigests - 1; i >= 0; i--) { @@ -862,6 +871,15 @@ } } +if (wf != NULL) { + if (dig->md5ctx) + (void) rpmDigestUpdate(dig->md5ctx, wf->h, wf->nh); + if ((rc = rpmwfNextXAR(wf)) != RPMRC_OK) return rc; + if ((rc = rpmwfPullXAR(wf, "Payload")) != RPMRC_OK) return rc; + if (dig->md5ctx) + (void) rpmDigestUpdate(dig->md5ctx, wf->p, wf->np); +} + rc = 0; exit: @@ . patch -p0 <<'@@ .' Index: rpm/rpmdb/librpmdb.vers ============================================================================ $ cvs diff -u -r1.26 -r1.27 librpmdb.vers --- rpm/rpmdb/librpmdb.vers 11 Nov 2007 23:59:20 -0000 1.26 +++ rpm/rpmdb/librpmdb.vers 13 Nov 2007 01:07:09 -0000 1.27 @@ -104,6 +104,8 @@ wrRPM; wrXAR; rpmwfFree; + rpmwfNextXAR; + rpmwfPullXAR; rpmVerifySignature; sqlitevec; tagTypeValidate; @@ . ______________________________________________________________________ RPM Package Manager http://rpm5.org CVS Sources Repository rpm-cvs@rpm5.org