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: 29-Sep-2007 19:06:26
Branch: HEAD Handle: 2007092918062500
Modified files:
rpm CHANGES
rpm/lib rpmts.c
rpm/rpmdb librpmdb.vers pkgio.c rpmdb.h sqlite.c
Log:
- move rpmtsFindPubkey() and rpmtsOp() to rpmdb for forward linkage.
Summary:
Revision Changes Path
1.1647 +1 -0 rpm/CHANGES
2.101 +0 -259 rpm/lib/rpmts.c
1.18 +2 -0 rpm/rpmdb/librpmdb.vers
1.7 +237 -21 rpm/rpmdb/pkgio.c
1.65 +8 -6 rpm/rpmdb/rpmdb.h
1.14 +1 -1 rpm/rpmdb/sqlite.c
____________________________________________________________________________
patch -p0 <<'@@ .'
Index: rpm/CHANGES
============================================================================
$ cvs diff -u -r1.1646 -r1.1647 CHANGES
--- rpm/CHANGES 29 Sep 2007 16:23:39 -0000 1.1646
+++ rpm/CHANGES 29 Sep 2007 17:06:25 -0000 1.1647
@@ -1,4 +1,5 @@
4.5 -> 5.0:
+ - jbj: move rpmtsFindPubkey() and rpmtsOp() to rpmdb for forward linkage.
- jbj: add _RPMTS_PRINT to keep rpmrollback.c happy.
- jbj: rearrange package.c internals to new locations.
- jbj: start eliminating rpmtsSetSig by inlining.
@@ .
patch -p0 <<'@@ .'
Index: rpm/lib/rpmts.c
============================================================================
$ cvs diff -u -r2.100 -r2.101 rpmts.c
--- rpm/lib/rpmts.c 29 Sep 2007 16:23:39 -0000 2.100
+++ rpm/lib/rpmts.c 29 Sep 2007 17:06:25 -0000 2.101
@@ -3,9 +3,6 @@
* Routine(s) to handle a "rpmts" transaction sets.
*/
#include "system.h"
-#if defined(HAVE_KEYUTILS_H)
-#include <keyutils.h>
-#endif
#include "rpmio_internal.h" /* XXX for pgp and beecrypt */
#include <rpmlib.h>
@@ -240,204 +237,6 @@
}
/*@=compdef@*/
-rpmRC rpmtsFindPubkey(rpmts ts, void * _dig)
-{
- pgpDig dig = (_dig ? _dig : rpmtsDig(ts));
- const void * sig = pgpGetSig(dig);
- pgpDigParams sigp = pgpGetSignature(dig);
- pgpDigParams pubp = pgpGetPubkey(dig);
- rpmRC res = RPMRC_NOKEY;
- const char * pubkeysource = NULL;
-#if defined(HAVE_KEYUTILS_H)
- int krcache = 1; /* XXX assume pubkeys are cached in keyutils keyring. */
-#endif
- int xx;
-
- if (sig == NULL || dig == NULL || sigp == NULL || pubp == NULL)
- goto exit;
-
-#if 0
-fprintf(stderr, "==> find sig id %08x %08x ts pubkey id %08x %08x\n",
-pgpGrab(sigp->signid, 4), pgpGrab(sigp->signid+4, 4),
-pgpGrab(ts->pksignid, 4), pgpGrab(ts->pksignid+4, 4));
-#endif
-
- /* Lazy free of previous pubkey if pubkey does not match this signature. */
- if (memcmp(sigp->signid, ts->pksignid, sizeof(ts->pksignid))) {
-#if 0
-fprintf(stderr, "*** free pkt %p[%d] id %08x %08x\n", ts->pkpkt, ts->pkpktlen, pgpGrab(ts->pksignid, 4), pgpGrab(ts->pksignid+4, 4));
-#endif
- ts->pkpkt = _free(ts->pkpkt);
- ts->pkpktlen = 0;
- memset(ts->pksignid, 0, sizeof(ts->pksignid));
- }
-
-#if defined(HAVE_KEYUTILS_H)
- /* Try keyutils keyring lookup. */
- if (krcache && ts->pkpkt == NULL) {
- key_serial_t keyring = KEY_SPEC_PROCESS_KEYRING;
- const char * krprefix = "rpm:gpg:pubkey:";
- char krfp[32];
- char * krn = alloca(strlen(krprefix) + sizeof("12345678"));
- long key;
-
- snprintf(krfp, sizeof(krfp), "%08X", pgpGrab(sigp->signid+4, 4));
- krfp[sizeof(krfp)-1] = '\0';
- *krn = '\0';
- (void) stpcpy( stpcpy(krn, krprefix), krfp);
-
- key = keyctl_search(keyring, "user", krn, 0);
- xx = keyctl_read(key, NULL, 0);
- if (xx > 0) {
- ts->pkpktlen = xx;
- ts->pkpkt = NULL;
- xx = keyctl_read_alloc(key, (void **)&ts->pkpkt);
- if (xx > 0) {
- pubkeysource = xstrdup(krn);
- krcache = 0; /* XXX don't bother caching. */
- } else {
- ts->pkpkt = _free(ts->pkpkt);
- ts->pkpktlen = 0;
- }
- }
- }
-#endif
-
- /* Try rpmdb keyring lookup. */
- if (ts->pkpkt == NULL) {
- int hx = -1;
- int ix = -1;
- rpmdbMatchIterator mi;
- Header h;
-
- /* Retrieve the pubkey that matches the signature. */
- mi = rpmtsInitIterator(ts, RPMTAG_PUBKEYS, sigp->signid, sizeof(sigp->signid));
- while ((h = rpmdbNextIterator(mi)) != NULL) {
- const char ** pubkeys;
- int_32 pt, pc;
-
- if (!headerGetEntry(h, RPMTAG_PUBKEYS, &pt, &pubkeys, &pc))
- continue;
- hx = rpmdbGetIteratorOffset(mi);
- ix = rpmdbGetIteratorFileNum(mi);
-/*@-boundsread@*/
- if (ix >= pc
- || b64decode(pubkeys[ix], (void **) &ts->pkpkt, &ts->pkpktlen))
- ix = -1;
-/*@=boundsread@*/
- pubkeys = headerFreeData(pubkeys, pt);
- break;
- }
- mi = rpmdbFreeIterator(mi);
-
-/*@-branchstate@*/
- if (ix >= 0) {
- char hnum[32];
- sprintf(hnum, "h#%d", hx);
- pubkeysource = xstrdup(hnum);
- } else {
- ts->pkpkt = _free(ts->pkpkt);
- ts->pkpktlen = 0;
- }
-/*@=branchstate@*/
- }
-
- /* Try keyserver lookup. */
- if (ts->pkpkt == NULL) {
- const char * fn = rpmExpand("%{_hkp_keyserver_query}",
- pgpHexStr(sigp->signid, sizeof(sigp->signid)), NULL);
-
- xx = 0;
- if (fn && *fn != '%') {
- xx = (pgpReadPkts(fn,&ts->pkpkt,&ts->pkpktlen) != PGPARMOR_PUBKEY);
- }
- fn = _free(fn);
-/*@-branchstate@*/
- if (xx) {
- ts->pkpkt = _free(ts->pkpkt);
- ts->pkpktlen = 0;
- } else {
- /* Save new pubkey in local ts keyring for delayed import. */
- pubkeysource = xstrdup("keyserver");
- }
-/*@=branchstate@*/
- }
-
-#ifdef NOTNOW
- /* Try filename from macro lookup. */
- if (ts->pkpkt == NULL) {
- const char * fn = rpmExpand("%{_gpg_pubkey}", NULL);
-
- xx = 0;
- if (fn && *fn != '%')
- xx = (pgpReadPkts(fn,&ts->pkpkt,&ts->pkpktlen) != PGPARMOR_PUBKEY);
- fn = _free(fn);
- if (xx) {
- ts->pkpkt = _free(ts->pkpkt);
- ts->pkpktlen = 0;
- } else {
- pubkeysource = xstrdup("macro");
- }
- }
-#endif
-
- /* Was a matching pubkey found? */
- if (ts->pkpkt == NULL || ts->pkpktlen == 0)
- goto exit;
-
- /* Retrieve parameters from pubkey packet(s). */
- xx = pgpPrtPkts(ts->pkpkt, ts->pkpktlen, dig, 0);
-
- /* Do the parameters match the signature? */
- if (sigp->pubkey_algo == pubp->pubkey_algo
-#ifdef NOTYET
- && sigp->hash_algo == pubp->hash_algo
-#endif
- && !memcmp(sigp->signid, pubp->signid, sizeof(sigp->signid)) )
- {
-
- /* XXX Verify any pubkey signatures. */
-
-#if defined(HAVE_KEYUTILS_H)
- /* Save the pubkey in the keyutils keyring. */
- if (krcache) {
- key_serial_t keyring = KEY_SPEC_PROCESS_KEYRING;
- const char * krprefix = "rpm:gpg:pubkey:";
- char krfp[32];
- char * krn = alloca(strlen(krprefix) + sizeof("12345678"));
-
- snprintf(krfp, sizeof(krfp), "%08X", pgpGrab(sigp->signid+4, 4));
- krfp[sizeof(krfp)-1] = '\0';
- *krn = '\0';
- (void) stpcpy( stpcpy(krn, krprefix), krfp);
- (void) add_key("user", krn, ts->pkpkt, ts->pkpktlen, keyring);
- }
-#endif
-
- /* Pubkey packet looks good, save the signer id. */
-/*@-boundsread@*/
- memcpy(ts->pksignid, pubp->signid, sizeof(ts->pksignid));
-/*@=boundsread@*/
-
- if (pubkeysource)
- rpmMessage(RPMMESS_DEBUG, "========== %s pubkey id %08x %08x (%s)\n",
- (sigp->pubkey_algo == PGPPUBKEYALGO_DSA ? "DSA" :
- (sigp->pubkey_algo == PGPPUBKEYALGO_RSA ? "RSA" : "???")),
- pgpGrab(sigp->signid, 4), pgpGrab(sigp->signid+4, 4),
- pubkeysource);
-
- res = RPMRC_OK;
- }
-
-exit:
- pubkeysource = _free(pubkeysource);
- if (res != RPMRC_OK) {
- ts->pkpkt = _free(ts->pkpkt);
- ts->pkpktlen = 0;
- }
- return res;
-}
-
int rpmtsCloseSDB(rpmts ts)
{
int rc = 0;
@@ -715,21 +514,6 @@
return ps;
}
-#ifdef DYING
-void rpmtsCleanDig(rpmts ts)
-{
- if (ts && ts->dig) {
- int opx;
- opx = RPMTS_OP_DIGEST;
- (void) rpmswAdd(rpmtsOp(ts, opx), pgpStatsAccumulator(ts->dig, opx));
- opx = RPMTS_OP_SIGNATURE;
- (void) rpmswAdd(rpmtsOp(ts, opx), pgpStatsAccumulator(ts->dig, opx));
- (void) rpmtsSetSig(ts, 0, 0, NULL, 0); /* XXX headerFreeData */
- ts->dig = pgpFreeDig(ts->dig);
- }
-}
-#endif
-
void rpmtsClean(rpmts ts)
{
rpmtsi pi; rpmte p;
@@ -1103,38 +887,6 @@
return otid;
}
-#ifdef DYING
-int rpmtsSetSig(rpmts ts,
- int_32 sigtag, int_32 sigtype, const void * sig, int_32 siglen)
-{
- int ret = 0;
- if (ts != NULL) {
- const void * osig = pgpGetSig(rpmtsDig(ts));
- int_32 osigtype = pgpGetSigtype(rpmtsDig(ts));
- if (osig && osigtype)
- osig = headerFreeData(osig, osigtype);
- ret = pgpSetSig(rpmtsDig(ts), sigtag, sigtype, sig, siglen);
- }
- return ret;
-}
-
-pgpDig rpmtsDig(rpmts ts)
-{
-/*@-mods@*/ /* FIX: hide lazy malloc for now */
- if (ts->dig == NULL) {
- ts->dig = pgpNewDig(0);
- (void) pgpSetFindPubkey(ts->dig, (int (*)(void *, void *))rpmtsFindPubkey, ts);
- }
-/*@=mods@*/
- return ts->dig;
-}
-
-pgpDigParams rpmtsPubkey(const rpmts ts)
-{
- return pgpGetPubkey(rpmtsDig(ts));
-}
-#endif
-
rpmdb rpmtsGetRdb(rpmts ts)
{
rpmdb rdb = NULL;
@@ -1511,17 +1263,6 @@
return (ts != NULL ? ts->prefcolor : 0);
}
-rpmop rpmtsOp(rpmts ts, rpmtsOpX opx)
-{
- rpmop op = NULL;
-
- if (ts != NULL && opx >= 0 && opx < RPMTS_OP_MAX)
- op = ts->ops + opx;
-/*@-usereleased -compdef @*/
- return op;
-/*@=usereleased =compdef @*/
-}
-
int rpmtsSetNotifyCallback(rpmts ts,
rpmCallbackFunction notify, rpmCallbackData notifyData)
{
@@ .
patch -p0 <<'@@ .'
Index: rpm/rpmdb/librpmdb.vers
============================================================================
$ cvs diff -u -r1.17 -r1.18 librpmdb.vers
--- rpm/rpmdb/librpmdb.vers 29 Sep 2007 16:23:40 -0000 1.17
+++ rpm/rpmdb/librpmdb.vers 29 Sep 2007 17:06:25 -0000 1.18
@@ -87,6 +87,8 @@
rpmTags;
rpmtsCleanDig;
rpmtsDig;
+ rpmtsFindPubkey;
+ rpmtsOp;
rpmtsPubkey;
rpmtsSetSig;
sqlitevec;
@@ .
patch -p0 <<'@@ .'
Index: rpm/rpmdb/pkgio.c
============================================================================
$ cvs diff -u -r1.6 -r1.7 pkgio.c
--- rpm/rpmdb/pkgio.c 29 Sep 2007 16:23:40 -0000 1.6
+++ rpm/rpmdb/pkgio.c 29 Sep 2007 17:06:25 -0000 1.7
@@ -11,9 +11,16 @@
#include <netinet/in.h>
+#if defined(HAVE_KEYUTILS_H)
+#include <keyutils.h>
+#endif
+
#include <rpmio_internal.h>
#include <rpmlib.h>
+#include <rpmdb.h> /* XXX rpmtsFindPubkey */
+#include <rpmmacro.h>
+
#define _RPMTS_INTERNAL
#include "rpmts.h"
@@ -29,17 +36,229 @@
/*===============================================*/
-void rpmtsCleanDig(rpmts ts)
+rpmop rpmtsOp(rpmts ts, rpmtsOpX opx)
{
- if (ts && ts->dig) {
- int opx;
- opx = RPMTS_OP_DIGEST;
- (void) rpmswAdd(rpmtsOp(ts, opx), pgpStatsAccumulator(ts->dig, opx));
- opx = RPMTS_OP_SIGNATURE;
- (void) rpmswAdd(rpmtsOp(ts, opx), pgpStatsAccumulator(ts->dig, opx));
- (void) rpmtsSetSig(ts, 0, 0, NULL, 0); /* XXX headerFreeData */
- ts->dig = pgpFreeDig(ts->dig);
+ rpmop op = NULL;
+
+ if (ts != NULL && opx >= 0 && opx < RPMTS_OP_MAX)
+ op = ts->ops + opx;
+/*@-usereleased -compdef @*/
+ return op;
+/*@=usereleased =compdef @*/
+}
+
+pgpDigParams rpmtsPubkey(const rpmts ts)
+{
+ return pgpGetPubkey(rpmtsDig(ts));
+}
+
+rpmRC rpmtsFindPubkey(rpmts ts, void * _dig)
+{
+ pgpDig dig = (_dig ? _dig : rpmtsDig(ts));
+ const void * sig = pgpGetSig(dig);
+ pgpDigParams sigp = pgpGetSignature(dig);
+ pgpDigParams pubp = pgpGetPubkey(dig);
+ rpmRC res = RPMRC_NOKEY;
+ const char * pubkeysource = NULL;
+#if defined(HAVE_KEYUTILS_H)
+ int krcache = 1; /* XXX assume pubkeys are cached in keyutils keyring. */
+#endif
+ int xx;
+
+ if (sig == NULL || dig == NULL || sigp == NULL || pubp == NULL)
+ goto exit;
+
+#if 0
+fprintf(stderr, "==> find sig id %08x %08x ts pubkey id %08x %08x\n",
+pgpGrab(sigp->signid, 4), pgpGrab(sigp->signid+4, 4),
+pgpGrab(ts->pksignid, 4), pgpGrab(ts->pksignid+4, 4));
+#endif
+
+ /* Lazy free of previous pubkey if pubkey does not match this signature. */
+ if (memcmp(sigp->signid, ts->pksignid, sizeof(ts->pksignid))) {
+#if 0
+fprintf(stderr, "*** free pkt %p[%d] id %08x %08x\n", ts->pkpkt, ts->pkpktlen, pgpGrab(ts->pksignid, 4), pgpGrab(ts->pksignid+4, 4));
+#endif
+ ts->pkpkt = _free(ts->pkpkt);
+ ts->pkpktlen = 0;
+ memset(ts->pksignid, 0, sizeof(ts->pksignid));
+ }
+
+#if defined(HAVE_KEYUTILS_H)
+ /* Try keyutils keyring lookup. */
+ if (krcache && ts->pkpkt == NULL) {
+ key_serial_t keyring = KEY_SPEC_PROCESS_KEYRING;
+ const char * krprefix = "rpm:gpg:pubkey:";
+ char krfp[32];
+ char * krn = alloca(strlen(krprefix) + sizeof("12345678"));
+ long key;
+
+ snprintf(krfp, sizeof(krfp), "%08X", pgpGrab(sigp->signid+4, 4));
+ krfp[sizeof(krfp)-1] = '\0';
+ *krn = '\0';
+ (void) stpcpy( stpcpy(krn, krprefix), krfp);
+
+ key = keyctl_search(keyring, "user", krn, 0);
+ xx = keyctl_read(key, NULL, 0);
+ if (xx > 0) {
+ ts->pkpktlen = xx;
+ ts->pkpkt = NULL;
+ xx = keyctl_read_alloc(key, (void **)&ts->pkpkt);
+ if (xx > 0) {
+ pubkeysource = xstrdup(krn);
+ krcache = 0; /* XXX don't bother caching. */
+ } else {
+ ts->pkpkt = _free(ts->pkpkt);
+ ts->pkpktlen = 0;
+ }
+ }
+ }
+#endif
+
+ /* Try rpmdb keyring lookup. */
+ if (ts->pkpkt == NULL) {
+ int hx = -1;
+ int ix = -1;
+ rpmdbMatchIterator mi;
+ Header h;
+
+ /* Retrieve the pubkey that matches the signature. */
+ mi = rpmtsInitIterator(ts, RPMTAG_PUBKEYS, sigp->signid, sizeof(sigp->signid));
+ while ((h = rpmdbNextIterator(mi)) != NULL) {
+ const char ** pubkeys;
+ int_32 pt, pc;
+
+ if (!headerGetEntry(h, RPMTAG_PUBKEYS, &pt, &pubkeys, &pc))
+ continue;
+ hx = rpmdbGetIteratorOffset(mi);
+ ix = rpmdbGetIteratorFileNum(mi);
+/*@-boundsread@*/
+ if (ix >= pc
+ || b64decode(pubkeys[ix], (void **) &ts->pkpkt, &ts->pkpktlen))
+ ix = -1;
+/*@=boundsread@*/
+ pubkeys = headerFreeData(pubkeys, pt);
+ break;
+ }
+ mi = rpmdbFreeIterator(mi);
+
+/*@-branchstate@*/
+ if (ix >= 0) {
+ char hnum[32];
+ sprintf(hnum, "h#%d", hx);
+ pubkeysource = xstrdup(hnum);
+ } else {
+ ts->pkpkt = _free(ts->pkpkt);
+ ts->pkpktlen = 0;
+ }
+/*@=branchstate@*/
+ }
+
+ /* Try keyserver lookup. */
+ if (ts->pkpkt == NULL) {
+ const char * fn = rpmExpand("%{_hkp_keyserver_query}",
+ pgpHexStr(sigp->signid, sizeof(sigp->signid)), NULL);
+
+ xx = 0;
+ if (fn && *fn != '%') {
+ xx = (pgpReadPkts(fn,&ts->pkpkt,&ts->pkpktlen) != PGPARMOR_PUBKEY);
+ }
+ fn = _free(fn);
+/*@-branchstate@*/
+ if (xx) {
+ ts->pkpkt = _free(ts->pkpkt);
+ ts->pkpktlen = 0;
+ } else {
+ /* Save new pubkey in local ts keyring for delayed import. */
+ pubkeysource = xstrdup("keyserver");
+ }
+/*@=branchstate@*/
+ }
+
+#ifdef NOTNOW
+ /* Try filename from macro lookup. */
+ if (ts->pkpkt == NULL) {
+ const char * fn = rpmExpand("%{_gpg_pubkey}", NULL);
+
+ xx = 0;
+ if (fn && *fn != '%')
+ xx = (pgpReadPkts(fn,&ts->pkpkt,&ts->pkpktlen) != PGPARMOR_PUBKEY);
+ fn = _free(fn);
+ if (xx) {
+ ts->pkpkt = _free(ts->pkpkt);
+ ts->pkpktlen = 0;
+ } else {
+ pubkeysource = xstrdup("macro");
+ }
+ }
+#endif
+
+ /* Was a matching pubkey found? */
+ if (ts->pkpkt == NULL || ts->pkpktlen == 0)
+ goto exit;
+
+ /* Retrieve parameters from pubkey packet(s). */
+ xx = pgpPrtPkts(ts->pkpkt, ts->pkpktlen, dig, 0);
+
+ /* Do the parameters match the signature? */
+ if (sigp->pubkey_algo == pubp->pubkey_algo
+#ifdef NOTYET
+ && sigp->hash_algo == pubp->hash_algo
+#endif
+ && !memcmp(sigp->signid, pubp->signid, sizeof(sigp->signid)) )
+ {
+
+ /* XXX Verify any pubkey signatures. */
+
+#if defined(HAVE_KEYUTILS_H)
+ /* Save the pubkey in the keyutils keyring. */
+ if (krcache) {
+ key_serial_t keyring = KEY_SPEC_PROCESS_KEYRING;
+ const char * krprefix = "rpm:gpg:pubkey:";
+ char krfp[32];
+ char * krn = alloca(strlen(krprefix) + sizeof("12345678"));
+
+ snprintf(krfp, sizeof(krfp), "%08X", pgpGrab(sigp->signid+4, 4));
+ krfp[sizeof(krfp)-1] = '\0';
+ *krn = '\0';
+ (void) stpcpy( stpcpy(krn, krprefix), krfp);
+ (void) add_key("user", krn, ts->pkpkt, ts->pkpktlen, keyring);
+ }
+#endif
+
+ /* Pubkey packet looks good, save the signer id. */
+/*@-boundsread@*/
+ memcpy(ts->pksignid, pubp->signid, sizeof(ts->pksignid));
+/*@=boundsread@*/
+
+ if (pubkeysource)
+ rpmMessage(RPMMESS_DEBUG, "========== %s pubkey id %08x %08x (%s)\n",
+ (sigp->pubkey_algo == PGPPUBKEYALGO_DSA ? "DSA" :
+ (sigp->pubkey_algo == PGPPUBKEYALGO_RSA ? "RSA" : "???")),
+ pgpGrab(sigp->signid, 4), pgpGrab(sigp->signid+4, 4),
+ pubkeysource);
+
+ res = RPMRC_OK;
}
+
+exit:
+ pubkeysource = _free(pubkeysource);
+ if (res != RPMRC_OK) {
+ ts->pkpkt = _free(ts->pkpkt);
+ ts->pkpktlen = 0;
+ }
+ return res;
+}
+
+pgpDig rpmtsDig(rpmts ts)
+{
+/*@-mods@*/ /* FIX: hide lazy malloc for now */
+ if (ts->dig == NULL) {
+ ts->dig = pgpNewDig(0);
+ (void) pgpSetFindPubkey(ts->dig, (int (*)(void *, void *))rpmtsFindPubkey, ts);
+ }
+/*@=mods@*/
+ return ts->dig;
}
int rpmtsSetSig(rpmts ts,
@@ -56,20 +275,17 @@
return ret;
}
-pgpDig rpmtsDig(rpmts ts)
+void rpmtsCleanDig(rpmts ts)
{
-/*@-mods@*/ /* FIX: hide lazy malloc for now */
- if (ts->dig == NULL) {
- ts->dig = pgpNewDig(0);
- (void) pgpSetFindPubkey(ts->dig, (int (*)(void *, void *))rpmtsFindPubkey, ts);
+ if (ts && ts->dig) {
+ int opx;
+ opx = RPMTS_OP_DIGEST;
+ (void) rpmswAdd(rpmtsOp(ts, opx), pgpStatsAccumulator(ts->dig, opx));
+ opx = RPMTS_OP_SIGNATURE;
+ (void) rpmswAdd(rpmtsOp(ts, opx), pgpStatsAccumulator(ts->dig, opx));
+ (void) rpmtsSetSig(ts, 0, 0, NULL, 0); /* XXX headerFreeData */
+ ts->dig = pgpFreeDig(ts->dig);
}
-/*@=mods@*/
- return ts->dig;
-}
-
-pgpDigParams rpmtsPubkey(const rpmts ts)
-{
- return pgpGetPubkey(rpmtsDig(ts));
}
/*===============================================*/
@@ .
patch -p0 <<'@@ .'
Index: rpm/rpmdb/rpmdb.h
============================================================================
$ cvs diff -u -r1.64 -r1.65 rpmdb.h
--- rpm/rpmdb/rpmdb.h 19 Aug 2007 21:12:23 -0000 1.64
+++ rpm/rpmdb/rpmdb.h 29 Sep 2007 17:06:25 -0000 1.65
@@ -839,11 +839,6 @@
/*@=exportlocal@*/
-/** \ingroup rpmdb
- */
-unsigned int rpmdbGetIteratorFileNum(rpmdbMatchIterator mi)
- /*@*/;
-
/** \ingroup dbi
* Destroy set of index database items.
* @param set set of index database items
@@ -1030,7 +1025,7 @@
/*@modifies db, rpmGlobalMacroContext, fileSystem, internalState @*/;
/** \ingroup rpmdb
- * Return header join key for current position of rpm database iterator.
+ * Return header instance join key for current position of rpmdb iterator.
* @param mi rpm database iterator
* @return current header join key
*/
@@ -1038,6 +1033,13 @@
/*@*/;
/** \ingroup rpmdb
+ * Return header tag index join key for current position of rpmdb iterator.
+ * @param mi rpm database iterator
+ */
+unsigned int rpmdbGetIteratorFileNum(rpmdbMatchIterator mi)
+ /*@*/;
+
+/** \ingroup rpmdb
* Return number of elements in rpm database iterator.
* @param mi rpm database iterator
* @return number of elements
@@ .
patch -p0 <<'@@ .'
Index: rpm/rpmdb/sqlite.c
============================================================================
$ cvs diff -u -r1.13 -r1.14 sqlite.c
--- rpm/rpmdb/sqlite.c 1 Aug 2007 17:58:37 -0000 1.13
+++ rpm/rpmdb/sqlite.c 29 Sep 2007 17:06:25 -0000 1.14
@@ -988,7 +988,7 @@
if (dbi->dbi_perms) {
if ((0644 /* = SQLite hard-coded default */ & dbi->dbi_perms) != dbi->dbi_perms) {
/* add requested permission bits which are still missing (semantic) */
- chmod(dbfname, dbi->dbi_perms);
+ Chmod(dbfname, dbi->dbi_perms);
}
umask(umask_safed);
}
@@ .
Received on Sat Sep 29 19:06:26 2007