RPM Community Forums

Mailing List Message of <rpm-cvs>

[CVS] RPM: rpm/ CHANGES rpm/lib/ rpmchecksig.c rpm/perl/ rpmxs.c rpm/r...

From: Jeff Johnson <jbj@rpm5.org>
Date: Tue 20 Nov 2007 - 18:37:04 CET
Message-Id: <20071120173704.A98F934845D@rpm5.org>
  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
Driven by Jeff Johnson and the RPM project team.
Hosted by OpenPKG and Ralf S. Engelschall.
Powered by FreeBSD and OpenPKG.