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