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 18:37:04
Branch: HEAD Handle: 2007112017370301
Modified files:
rpm CHANGES
rpm/lib rpmchecksig.c
rpm/perl rpmxs.c
rpm/rpmdb hdrfmt.c pkgio.c rpmwf.c rpmwf.h signature.c
rpm/rpmio librpmio.vers rpmio_internal.h rpmpgp.c rpmpgp.h
thkp.c tkey.c
Log:
- add refcounts to rpmwf and pgpDig, they're gonna be snarly.
Summary:
Revision Changes Path
1.1852 +1 -0 rpm/CHANGES
1.184 +5 -5 rpm/lib/rpmchecksig.c
1.5 +2 -1 rpm/perl/rpmxs.c
1.35 +2 -2 rpm/rpmdb/hdrfmt.c
1.43 +2 -2 rpm/rpmdb/pkgio.c
1.11 +34 -3 rpm/rpmdb/rpmwf.c
1.5 +39 -0 rpm/rpmdb/rpmwf.h
1.30 +2 -2 rpm/rpmdb/signature.c
2.16 +5 -3 rpm/rpmio/librpmio.vers
2.87 +2 -0 rpm/rpmio/rpmio_internal.h
2.71 +51 -20 rpm/rpmio/rpmpgp.c
2.55 +46 -9 rpm/rpmio/rpmpgp.h
2.13 +3 -3 rpm/rpmio/thkp.c
2.19 +2 -2 rpm/rpmio/tkey.c
____________________________________________________________________________
patch -p0 <<'@@ .'
Index: rpm/CHANGES
============================================================================
$ cvs diff -u -r1.1851 -r1.1852 CHANGES
--- rpm/CHANGES 19 Nov 2007 21:50:17 -0000 1.1851
+++ rpm/CHANGES 20 Nov 2007 17:37:03 -0000 1.1852
@@ -1,4 +1,5 @@
5.0a2 -> 5.0a3:
+ - jbj: add refcounts to rpmwf and pgpDig, they're gonna be snarly.
- jbj: eliminate the headerCheck recursion check. not seen w rpm code paths.
- jbj: pass dig, not ts, through pkgio.c header routines.
- jbj: eliminate 2 of 3 remaining uses of headerWrite.
@@ .
patch -p0 <<'@@ .'
Index: rpm/lib/rpmchecksig.c
============================================================================
$ cvs diff -u -r1.183 -r1.184 rpmchecksig.c
--- rpm/lib/rpmchecksig.c 18 Nov 2007 22:33:21 -0000 1.183
+++ rpm/lib/rpmchecksig.c 20 Nov 2007 17:37:03 -0000 1.184
@@ -157,7 +157,7 @@
he->tag = sigtag;
xx = hge(sigh, he, 0);
if (xx && he->p.ptr != NULL) {
- pgpDig dig = pgpNewDig(0);
+ pgpDig dig = pgpDigNew(0);
if (!pgpPrtPkts(he->p.ptr, he->c, dig, 0)) {
memcpy(signid, dig->signature.signid, sizeof(dig->signature.signid));
@@ -165,7 +165,7 @@
}
he->p.ptr = _free(he->p.ptr);
- dig = pgpFreeDig(dig);
+ dig = pgpDigFree(dig);
}
return rc;
}
@@ -510,7 +510,7 @@
goto exit;
/*@=moduncon@*/
- dig = pgpNewDig(0);
+ dig = pgpDigNew(0);
/* Build header elements. */
(void) pgpPrtPkts(pkt, pktlen, dig, 0);
@@ -693,7 +693,7 @@
exit:
/* Clean up. */
h = headerFree(h);
- dig = pgpFreeDig(dig);
+ dig = pgpDigFree(dig);
n = _free(n);
u = _free(u);
v = _free(v);
@@ -1002,7 +1002,7 @@
assert(she->p.ptr != NULL);
/* Clean up parameters from previous she->tag. */
- pgpCleanDig(dig);
+ pgpDigClean(dig);
/*@-noeffect@*/
xx = pgpSetSig(rpmtsDig(ts), she->tag, she->t, she->p.ptr, she->c);
@@ .
patch -p0 <<'@@ .'
Index: rpm/perl/rpmxs.c
============================================================================
$ cvs diff -u -r1.4 -r1.5 rpmxs.c
--- rpm/perl/rpmxs.c 14 Aug 2007 01:19:41 -0000 1.4
+++ rpm/perl/rpmxs.c 20 Nov 2007 17:37:03 -0000 1.5
@@ -13,8 +13,9 @@
#include <utime.h>
#include <utime.h>
-#include "rpmlib.h"
#include "rpmio.h"
+#include "rpmlib.h"
+#include "rpmbuild.h"
#include "rpmconstant.h"
#include "rpmxs.h"
@@ .
patch -p0 <<'@@ .'
Index: rpm/rpmdb/hdrfmt.c
============================================================================
$ cvs diff -u -r1.34 -r1.35 hdrfmt.c
--- rpm/rpmdb/hdrfmt.c 14 Nov 2007 23:56:33 -0000 1.34
+++ rpm/rpmdb/hdrfmt.c 20 Nov 2007 17:37:03 -0000 1.35
@@ -655,7 +655,7 @@
if (pktlen == 0 || tag != PGPTAG_SIGNATURE) {
val = xstrdup(_("(not an OpenPGP signature)"));
} else {
- pgpDig dig = pgpNewDig(0);
+ pgpDig dig = pgpDigNew(0);
pgpDigParams sigp = pgpGetSignature(dig);
size_t nb = 0;
const char *tempstr;
@@ -714,7 +714,7 @@
goto again;
t = stpcpy(t, tempstr);
- dig = pgpFreeDig(dig);
+ dig = pgpDigFree(dig);
}
}
@@ .
patch -p0 <<'@@ .'
Index: rpm/rpmdb/pkgio.c
============================================================================
$ cvs diff -u -r1.42 -r1.43 pkgio.c
--- rpm/rpmdb/pkgio.c 19 Nov 2007 22:22:09 -0000 1.42
+++ rpm/rpmdb/pkgio.c 20 Nov 2007 17:37:03 -0000 1.43
@@ -285,7 +285,7 @@
{
/*@-mods@*/ /* FIX: hide lazy malloc for now */
if (ts->dig == NULL) {
- ts->dig = pgpNewDig(0);
+ ts->dig = pgpDigNew(0);
/*@-refcounttrans@*/
(void) pgpSetFindPubkey(ts->dig, (int (*)(void *, void *))rpmtsFindPubkey, ts);
/*@=refcounttrans@*/
@@ -302,7 +302,7 @@
(void) rpmswAdd(rpmtsOp(ts, opx), pgpStatsAccumulator(ts->dig, opx));
opx = RPMTS_OP_SIGNATURE;
(void) rpmswAdd(rpmtsOp(ts, opx), pgpStatsAccumulator(ts->dig, opx));
- ts->dig = pgpFreeDig(ts->dig);
+ ts->dig = pgpDigFree(ts->dig);
}
}
@@ .
patch -p0 <<'@@ .'
Index: rpm/rpmdb/rpmwf.c
============================================================================
$ cvs diff -u -r1.10 -r1.11 rpmwf.c
--- rpm/rpmdb/rpmwf.c 16 Nov 2007 09:40:46 -0000 1.10
+++ rpm/rpmdb/rpmwf.c 20 Nov 2007 17:37:03 -0000 1.11
@@ -300,12 +300,37 @@
return RPMRC_OK;
}
+rpmwf XrpmwfUnlink(rpmwf wf, const char * msg, const char * fn, unsigned ln)
+{
+ if (wf == NULL) return NULL;
+/*@-modfilesys@*/
+if (_rpmwf_debug && msg != NULL)
+fprintf(stderr, "--> wf %p -- %d %s at %s:%u\n", wf, wf->nrefs, msg, fn, ln);
+/*@=modfilesys@*/
+ wf->nrefs--;
+ return NULL;
+}
+
+rpmwf XrpmwfLink(rpmwf wf, const char * msg, const char * fn, unsigned ln)
+{
+ if (wf == NULL) return NULL;
+ wf->nrefs++;
+
+/*@-modfilesys@*/
+if (_rpmwf_debug && msg != NULL)
+fprintf(stderr, "--> wf %p ++ %d %s at %s:%u\n", wf, wf->nrefs, msg, fn, ln);
+/*@=modfilesys@*/
+
+ /*@-refcounttrans@*/ return wf; /*@=refcounttrans@*/
+}
+
rpmwf rpmwfFree(rpmwf wf)
{
-if (_rpmwf_debug)
-fprintf(stderr, "*** rpmwfFree(%p)\n", wf);
if (wf) {
+ if (wf->nrefs > 1)
+ return rpmwfUnlink(wf, "rpmwfFree");
+
if (wf->b == NULL) {
/*@-dependenttrans -onlytrans @*/ /* rpm needs dependent, xar needs only */
wf->l = _free(wf->l);
@@ -319,7 +344,12 @@
(void) rpmwfFiniRPM(wf);
wf->fn = _free(wf->fn);
+
+ (void) rpmwfUnlink(wf, "rpmwfFree");
+ /*@-refcounttrans -usereleased@*/
+ memset(wf, 0, sizeof(*wf)); /* XXX trash and burn */
wf = _free(wf);
+ /*@=refcounttrans =usereleased@*/
}
return NULL;
}
@@ -340,7 +370,8 @@
if (_rpmwf_debug)
fprintf(stderr, "*** rpmwfNew(%s) wf %p nb %u\n", wf->fn, wf, (unsigned)wf->nb);
- return wf;
+
+ return rpmwfLink(wf, "rpmwfNew");
}
rpmwf rdRPM(const char * rpmfn)
@@ .
patch -p0 <<'@@ .'
Index: rpm/rpmdb/rpmwf.h
============================================================================
$ cvs diff -u -r1.4 -r1.5 rpmwf.h
--- rpm/rpmdb/rpmwf.h 14 Nov 2007 23:56:33 -0000 1.4
+++ rpm/rpmdb/rpmwf.h 20 Nov 2007 17:37:03 -0000 1.5
@@ -32,6 +32,8 @@
xar_iter_t i;
#endif
int first;
+/*@refs@*/
+ int nrefs; /*!< Reference count. */
};
#endif
@@ -71,6 +73,43 @@
/*@globals fileSystem @*/
/*@modifies wf, fileSystem @*/;
+/**
+ * Unreference a wrapper format instance.
+ * @param wf wrapper format
+ * @param msg
+ * @return NULL always
+ */
+/*@unused@*/ /*@null@*/
+rpmwf rpmwfUnlink (/*@killref@*/ /*@only@*/ /*@null@*/ rpmwf wf,
+ /*@null@*/ const char * msg)
+ /*@modifies wf @*/;
+
+/** @todo Remove debugging entry from the ABI. */
+/*@-exportlocal@*/
+/*@null@*/
+rpmwf XrpmwfUnlink (/*@killref@*/ /*@only@*/ /*@null@*/ rpmwf wf,
+ /*@null@*/ const char * msg, const char * fn, unsigned ln)
+ /*@modifies wf @*/;
+/*@=exportlocal@*/
+#define rpmwfUnlink(_wf, _msg) XrpmwfUnlink(_wf, _msg, __FILE__, __LINE__)
+
+/**
+ * Reference a wrapper format instance.
+ * @param wf wrapper format
+ * @param msg
+ * @return new wrapper format reference
+ */
+/*@unused@*/ /*@newref@*/ /*@null@*/
+rpmwf rpmwfLink (/*@null@*/ rpmwf wf, /*@null@*/ const char * msg)
+ /*@modifies wf @*/;
+
+/** @todo Remove debugging entry from the ABI. */
+/*@newref@*/ /*@null@*/
+rpmwf XrpmwfLink (/*@null@*/ rpmwf wf, /*@null@*/ const char * msg,
+ const char * fn, unsigned ln)
+ /*@modifies wf @*/;
+#define rpmwfLink(_wf, _msg) XrpmwfLink(_wf, _msg, __FILE__, __LINE__)
+
rpmwf rpmwfFree(/*@only@*/ rpmwf wf)
/*@globals fileSystem @*/
/*@modifies wf, fileSystem @*/;
@@ .
patch -p0 <<'@@ .'
Index: rpm/rpmdb/signature.c
============================================================================
$ cvs diff -u -r1.29 -r1.30 signature.c
--- rpm/rpmdb/signature.c 19 Nov 2007 18:57:59 -0000 1.29
+++ rpm/rpmdb/signature.c 20 Nov 2007 17:37:03 -0000 1.30
@@ -262,7 +262,7 @@
rpmlog(RPMLOG_DEBUG, D_("Got %u bytes of GPG sig\n"), (unsigned)*pktlenp);
/* Parse the signature, change signature tag as appropriate. */
- dig = pgpNewDig(0);
+ dig = pgpDigNew(0);
(void) pgpPrtPkts(*pktp, *pktlenp, dig, 0);
sigp = pgpGetSignature(dig);
@@ -287,7 +287,7 @@
break;
}
- dig = pgpFreeDig(dig);
+ dig = pgpDigFree(dig);
return 0;
}
@@ .
patch -p0 <<'@@ .'
Index: rpm/rpmio/librpmio.vers
============================================================================
$ cvs diff -u -r2.15 -r2.16 librpmio.vers
--- rpm/rpmio/librpmio.vers 9 Nov 2007 18:00:07 -0000 2.15
+++ rpm/rpmio/librpmio.vers 20 Nov 2007 17:37:04 -0000 2.16
@@ -147,10 +147,13 @@
pgpArmorKeyTbl;
pgpArmorTbl;
pgpArmorWrap;
- pgpCleanDig;
pgpCompressionTbl;
+ pgpDigClean;
+ pgpDigFree;
+ pgpDigNew;
+ XpgpDigLink;
+ XpgpDigUnlink;
pgpFindPubkey;
- pgpFreeDig;
pgpGetPubkey;
pgpGetSignature;
pgpGetSigtag;
@@ -160,7 +163,6 @@
pgpGetVSFlags;
pgpHashTbl;
pgpKeyServerPrefsTbl;
- pgpNewDig;
pgpPrtComment;
pgpPrtKey;
pgpPrtPkt;
@@ .
patch -p0 <<'@@ .'
Index: rpm/rpmio/rpmio_internal.h
============================================================================
$ cvs diff -u -r2.86 -r2.87 rpmio_internal.h
--- rpm/rpmio/rpmio_internal.h 14 Nov 2007 23:56:35 -0000 2.86
+++ rpm/rpmio/rpmio_internal.h 20 Nov 2007 17:37:04 -0000 2.87
@@ -77,6 +77,8 @@
/*@modifies *_ts, *_dig @*/;/*!< Find pubkey, i.e. rpmtsFindPubkey(). */
/*@null@*/
void * _ts; /*!< Find pubkey argument, i.e. rpmts. */
+/*@refs@*/
+ int nrefs; /*!< Reference count. */
byte ** ppkts;
int npkts;
@@ .
patch -p0 <<'@@ .'
Index: rpm/rpmio/rpmpgp.c
============================================================================
$ cvs diff -u -r2.70 -r2.71 rpmpgp.c
--- rpm/rpmio/rpmpgp.c 15 Nov 2007 17:27:59 -0000 2.70
+++ rpm/rpmio/rpmpgp.c 20 Nov 2007 17:37:04 -0000 2.71
@@ -12,7 +12,7 @@
/*@access pgpPkt @*/
/*@unchecked@*/
-static int _debug = 0;
+static int _pgp_debug = 0;
/*@unchecked@*/
static int _print = 0;
@@ -272,15 +272,15 @@
t = xmalloc(2*nbytes+1);
ix = 2 * ((nbits - mbits) >> 3);
-if (_debug)
+if (_pgp_debug)
fprintf(stderr, "*** mbits %u nbits %u nbytes %u t %p[%d] ix %u\n", mbits, nbits, nbytes, t, (2*nbytes+1), ix);
if (ix > 0) memset(t, (int)'0', ix);
strcpy(t+ix, pgpMpiHex(p));
-if (_debug)
+if (_pgp_debug)
fprintf(stderr, "*** %s %s\n", pre, t);
(void) mpnsethex(mpn, t);
t = _free(t);
-if (_debug && _print)
+if (_pgp_debug && _print)
fprintf(stderr, "\t %s ", pre), mpfprintln(stderr, mpn->size, mpn->data);
return 0;
}
@@ -416,7 +416,7 @@
switch (i) {
case 0: /* m**d */
(void) mpnsethex(&_dig->c, pgpMpiHex(p));
-if (_debug && _print)
+if (_pgp_debug && _print)
fprintf(stderr, "\t m**d = "), mpfprintln(stderr, _dig->c.size, _dig->c.data);
/*@switchbreak@*/ break;
default:
@@ -518,7 +518,7 @@
if ((p + plen) > (pp->h + pp->hlen))
return 1;
-if (_debug && _print)
+if (_pgp_debug && _print)
fprintf(stderr, " hash[%u] -- %s\n", plen, pgpHexStr(p, plen));
if (_digp && _digp->pubkey_algo == 0) {
_digp->hashlen = sizeof(*v) + plen;
@@ -533,7 +533,7 @@
if ((p + plen) > (pp->h + pp->hlen))
return 1;
-if (_debug && _print)
+if (_pgp_debug && _print)
fprintf(stderr, " unhash[%u] -- %s\n", plen, pgpHexStr(p, plen));
(void) pgpPrtSubType(p, plen, v->sigtype);
p += plen;
@@ -630,12 +630,12 @@
switch (i) {
case 0: /* n */
(void) mpbsethex(&_dig->rsa_pk.n, pgpMpiHex(p));
-if (_debug && _print)
+if (_pgp_debug && _print)
fprintf(stderr, "\t n = "), mpfprintln(stderr, _dig->rsa_pk.n.size, _dig->rsa_pk.n.modl);
/*@switchbreak@*/ break;
case 1: /* e */
(void) mpnsethex(&_dig->rsa_pk.e, pgpMpiHex(p));
-if (_debug && _print)
+if (_pgp_debug && _print)
fprintf(stderr, "\t e = "), mpfprintln(stderr, _dig->rsa_pk.e.size, _dig->rsa_pk.e.data);
/*@switchbreak@*/ break;
default:
@@ -649,22 +649,22 @@
switch (i) {
case 0: /* p */
(void) mpbsethex(&_dig->p, pgpMpiHex(p));
-if (_debug && _print)
+if (_pgp_debug && _print)
fprintf(stderr, "\t p = "), mpfprintln(stderr, _dig->p.size, _dig->p.modl);
/*@switchbreak@*/ break;
case 1: /* q */
(void) mpbsethex(&_dig->q, pgpMpiHex(p));
-if (_debug && _print)
+if (_pgp_debug && _print)
fprintf(stderr, "\t q = "), mpfprintln(stderr, _dig->q.size, _dig->q.modl);
/*@switchbreak@*/ break;
case 2: /* g */
(void) mpnsethex(&_dig->g, pgpMpiHex(p));
-if (_debug && _print)
+if (_pgp_debug && _print)
fprintf(stderr, "\t g = "), mpfprintln(stderr, _dig->g.size, _dig->g.data);
/*@switchbreak@*/ break;
case 3: /* y */
(void) mpnsethex(&_dig->y, pgpMpiHex(p));
-if (_debug && _print)
+if (_pgp_debug && _print)
fprintf(stderr, "\t y = "), mpfprintln(stderr, _dig->y.size, _dig->y.data);
/*@switchbreak@*/ break;
default:
@@ -1027,14 +1027,31 @@
return (rc ? -1 : pp->pktlen);
}
-pgpDig pgpNewDig(pgpVSFlags vsflags)
+pgpDig XpgpDigUnlink(pgpDig dig, const char * msg, const char * fn, unsigned ln)
{
- pgpDig dig = xcalloc(1, sizeof(*dig));
- dig->vsflags = vsflags;
- return dig;
+ if (dig == NULL) return NULL;
+/*@-modfilesys@*/
+if (_pgp_debug && msg != NULL)
+fprintf(stderr, "--> dig %p -- %d %s at %s:%u\n", dig, dig->nrefs, msg, fn, ln);
+/*@=modfilesys@*/
+ dig->nrefs--;
+ return NULL;
+}
+
+pgpDig XpgpDigLink(pgpDig dig, const char * msg, const char * fn, unsigned ln)
+{
+ if (dig == NULL) return NULL;
+ dig->nrefs++;
+
+/*@-modfilesys@*/
+if (_pgp_debug && msg != NULL)
+fprintf(stderr, "--> dig %p ++ %d %s at %s:%u\n", dig, dig->nrefs, msg, fn, ln);
+/*@=modfilesys@*/
+
+ /*@-refcounttrans@*/ return dig; /*@=refcounttrans@*/
}
-void pgpCleanDig(pgpDig dig)
+void pgpDigClean(pgpDig dig)
{
if (dig != NULL) {
int i;
@@ -1072,17 +1089,20 @@
/*@=nullstate@*/
}
-pgpDig pgpFreeDig(/*@only@*/ /*@null@*/ pgpDig dig)
+pgpDig pgpDigFree(/*@only@*/ /*@null@*/ pgpDig dig)
/*@modifies dig @*/
{
if (dig != NULL) {
+ if (dig->nrefs > 1)
+ return pgpDigUnlink(dig, "pgpDigFree");
+
/* Lose the header tag data. */
/* XXX this free should be done somewhere else. */
dig->sig = _free(dig->sig);
/* Dump the signature/pubkey data. */
- pgpCleanDig(dig);
+ pgpDigClean(dig);
if (dig->hdrsha1ctx != NULL)
(void) rpmDigestFinal(dig->hdrsha1ctx, NULL, NULL, 0);
@@ -1116,11 +1136,22 @@
mpnfree(&dig->c);
mpnfree(&dig->hm);
+ (void) pgpDigUnlink(dig, "pgpDigFree");
+ /*@-refcounttrans -usereleased@*/
+ memset(dig, 0, sizeof(*dig)); /* XXX trash and burn */
dig = _free(dig);
+ /*@=refcounttrans =usereleased@*/
}
return dig;
}
+pgpDig pgpDigNew(pgpVSFlags vsflags)
+{
+ pgpDig dig = xcalloc(1, sizeof(*dig));
+ dig->vsflags = vsflags;
+ return pgpDigLink(dig, "pgpDigNew");
+}
+
pgpDigParams pgpGetSignature(pgpDig dig)
{
return (dig ? &dig->signature : NULL);
@@ .
patch -p0 <<'@@ .'
Index: rpm/rpmio/rpmpgp.h
============================================================================
$ cvs diff -u -r2.54 -r2.55 rpmpgp.h
--- rpm/rpmio/rpmpgp.h 19 Nov 2007 21:50:18 -0000 2.54
+++ rpm/rpmio/rpmpgp.h 20 Nov 2007 17:37:04 -0000 2.55
@@ -1358,27 +1358,64 @@
RPMVSF_NORSA )
/**
- * Create a container for parsed OpenPGP packates.
- * @return container
+ * Unreference a signature parameters instance.
+ * @param dig signature parameters
+ * @param msg
+ * @return NULL always
*/
-/*@only@*/
-pgpDig pgpNewDig(pgpVSFlags vsflags)
- /*@*/;
+/*@unused@*/ /*@null@*/
+pgpDig pgpDigUnlink (/*@killref@*/ /*@only@*/ /*@null@*/ pgpDig dig,
+ /*@null@*/ const char * msg)
+ /*@modifies dig @*/;
+
+/** @todo Remove debugging entry from the ABI. */
+/*@-exportlocal@*/
+/*@null@*/
+pgpDig XpgpDigUnlink (/*@killref@*/ /*@only@*/ /*@null@*/ pgpDig dig,
+ /*@null@*/ const char * msg, const char * fn, unsigned ln)
+ /*@modifies dig @*/;
+/*@=exportlocal@*/
+#define pgpDigUnlink(_dig, _msg) XpgpDigUnlink(_dig, _msg, __FILE__, __LINE__)
/**
- * Release (malloc'd) data from container.
- * @param dig signature parameters container
+ * Reference a signature parameters instance.
+ * @param dig signature parameters
+ * @param msg
+ * @return new signature parameters reference
*/
-void pgpCleanDig(/*@null@*/ pgpDig dig)
+/*@unused@*/ /*@newref@*/ /*@null@*/
+pgpDig pgpDigLink (/*@null@*/ pgpDig dig, /*@null@*/ const char * msg)
/*@modifies dig @*/;
+/** @todo Remove debugging entry from the ABI. */
+/*@newref@*/ /*@null@*/
+pgpDig XpgpDigLink (/*@null@*/ pgpDig dig, /*@null@*/ const char * msg,
+ const char * fn, unsigned ln)
+ /*@modifies dig @*/;
+#define pgpDigLink(_dig, _msg) XpgpDigLink(_dig, _msg, __FILE__, __LINE__)
+
/**
* Destroy a container for parsed OpenPGP packates.
* @param dig signature parameters container
* @return NULL always
*/
/*@only@*/ /*@null@*/
-pgpDig pgpFreeDig(/*@only@*/ /*@null@*/ pgpDig dig)
+pgpDig pgpDigFree(/*@only@*/ /*@null@*/ pgpDig dig)
+ /*@modifies dig @*/;
+
+/**
+ * Create a container for parsed OpenPGP packates.
+ * @return container
+ */
+/*@only@*/
+pgpDig pgpDigNew(pgpVSFlags vsflags)
+ /*@*/;
+
+/**
+ * Release (malloc'd) data from container.
+ * @param dig signature parameters container
+ */
+void pgpDigClean(/*@null@*/ pgpDig dig)
/*@modifies dig @*/;
/**
@@ .
patch -p0 <<'@@ .'
Index: rpm/rpmio/thkp.c
============================================================================
$ cvs diff -u -r2.12 -r2.13 thkp.c
--- rpm/rpmio/thkp.c 18 Sep 2007 06:47:54 -0000 2.12
+++ rpm/rpmio/thkp.c 20 Nov 2007 17:37:04 -0000 2.13
@@ -51,7 +51,7 @@
int rc;
int ec = 0;
- dig = pgpNewDig(0);
+ dig = pgpDigNew(0);
for (kip = keyids; *kip; kip += 2) {
pgpArmor pa;
@@ -77,12 +77,12 @@
fprintf(stderr, "KEYID: %08x %08x\n", pgpGrab(keyid, 4), pgpGrab(keyid+4, 4));
- pgpCleanDig(dig);
+ pgpDigClean(dig);
free((void *)pkt);
pkt = NULL;
}
- dig = pgpFreeDig(dig);
+ dig = pgpDigFree(dig);
return ec;
}
@@ .
patch -p0 <<'@@ .'
Index: rpm/rpmio/tkey.c
============================================================================
$ cvs diff -u -r2.18 -r2.19 tkey.c
--- rpm/rpmio/tkey.c 18 Sep 2007 06:47:54 -0000 2.18
+++ rpm/rpmio/tkey.c 20 Nov 2007 17:37:04 -0000 2.19
@@ -106,7 +106,7 @@
int printing = 1;
int rc;
- dig = pgpNewDig(0);
+ dig = pgpDigNew(0);
mpbzero(&dig->p); mpbsethex(&dig->p, fips_p);
mpbzero(&dig->q); mpbsethex(&dig->q, fips_q);
@@ -176,7 +176,7 @@
mpnfree(&dig->r);
mpnfree(&dig->s);
- dig = pgpFreeDig(dig);
+ dig = pgpDigFree(dig);
return rc;
}
@@ .
Received on Tue Nov 20 18:37:04 2007