RPM Community Forums

Mailing List Message of <rpm-cvs>

[CVS] RPM: rpm/ CHANGES rpm/lib/ .splintrc package.c rpmlib.h rpm/rpmd...

From: Jeff Johnson <jbj@rpm5.org>
Date: Wed 14 Nov 2007 - 02:17:53 CET
Message-Id: <20071114011753.74413348473@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:   14-Nov-2007 02:17:53
  Branch: HEAD                             Handle: 2007111401175101

  Modified files:
    rpm                     CHANGES
    rpm/lib                 .splintrc package.c rpmlib.h
    rpm/rpmdb               .splintrc db3.c hdrNVR.c hdrfmt.c hdrinline.h
                            header.c header.h pkgio.c pkgio.h rpmdb.c rpmwf.c
                            rpmwf.h signature.c

  Log:
    - jbj: splint fiddles for rpmdb.

  Summary:
    Revision    Changes     Path
    1.1823      +1  -0      rpm/CHANGES
    2.14        +1  -1      rpm/lib/.splintrc
    2.182       +2  -4      rpm/lib/package.c
    2.446       +0  -14     rpm/lib/rpmlib.h
    1.9         +20 -1      rpm/rpmdb/.splintrc
    1.80        +1  -1      rpm/rpmdb/db3.c
    1.30        +1  -1      rpm/rpmdb/hdrNVR.c
    1.32        +2  -8      rpm/rpmdb/hdrfmt.c
    1.31        +8  -2      rpm/rpmdb/hdrinline.h
    1.118       +34 -21     rpm/rpmdb/header.c
    1.64        +1  -0      rpm/rpmdb/header.h
    1.32        +6  -25     rpm/rpmdb/pkgio.c
    1.8         +13 -0      rpm/rpmdb/pkgio.h
    1.206       +1  -1      rpm/rpmdb/rpmdb.c
    1.7         +27 -3      rpm/rpmdb/rpmwf.c
    1.3         +34 -15     rpm/rpmdb/rpmwf.h
    1.20        +3  -1      rpm/rpmdb/signature.c
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/CHANGES
  ============================================================================
  $ cvs diff -u -r1.1822 -r1.1823 CHANGES
  --- rpm/CHANGES	13 Nov 2007 13:34:42 -0000	1.1822
  +++ rpm/CHANGES	14 Nov 2007 01:17:51 -0000	1.1823
  @@ -1,4 +1,5 @@
   5.0a1 -> 5.0a2:
  +    - jbj: splint fiddles for rpmdb.
       - jbj: don't cache unsatisfied Suggests:.
       - jbj: fix the last memory leak with -Kvv, recheck install/query paths.
       - jbj: functional -Kvv *.xar header-only DSA verify.
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/lib/.splintrc
  ============================================================================
  $ cvs diff -u -r2.13 -r2.14 .splintrc
  --- rpm/lib/.splintrc	30 Sep 2007 20:38:25 -0000	2.13
  +++ rpm/lib/.splintrc	14 Nov 2007 01:17:51 -0000	2.14
  @@ -1,4 +1,4 @@
  --I. -I.. -I../build -I../rpmdb -I../rpmio -I../beecrypt -I../popt -I../elfutils/libelf -DHAVE_CONFIG_H -D_GNU_SOURCE -D__STDC__=1
  +-I. -I.. -I../build -I../rpmdb -I../rpmio -I../xar/include -I../beecrypt -I../popt -I../elfutils/libelf -DHAVE_CONFIG_H -D_GNU_SOURCE -D__STDC__=1
   
   +partial
   +forcehints
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/lib/package.c
  ============================================================================
  $ cvs diff -u -r2.181 -r2.182 package.c
  --- rpm/lib/package.c	10 Nov 2007 19:35:59 -0000	2.181
  +++ rpm/lib/package.c	14 Nov 2007 01:17:51 -0000	2.182
  @@ -13,8 +13,8 @@
   
   #include <pkgio.h>
   
  -#include "header_internal.h"	/* XXX headerCheck */
  -#include "signature.h"
  +#include "signature.h"		/* XXX rpmVerifySignature */
  +
   #include "debug.h"
   
   #define	alloca_strdup(_s)	strcpy(alloca(strlen(_s)+1), (_s))
  @@ -22,8 +22,6 @@
   /*@access pgpDig @*/
   /*@access pgpDigParams @*/
   /*@access Header @*/		/* XXX compared with NULL */
  -/*@access entryInfo @*/		/* XXX headerCheck */
  -/*@access indexEntry @*/	/* XXX headerCheck */
   /*@access FD_t @*/		/* XXX stealing digests */
   
   /*@unchecked@*/
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/lib/rpmlib.h
  ============================================================================
  $ cvs diff -u -r2.445 -r2.446 rpmlib.h
  --- rpm/lib/rpmlib.h	9 Nov 2007 21:15:45 -0000	2.445
  +++ rpm/lib/rpmlib.h	14 Nov 2007 01:17:51 -0000	2.446
  @@ -353,20 +353,6 @@
    */
   typedef /*@abstract@*/ /*@refcounted@*/ struct rpmpsm_s * rpmpsm;
   
  -/** 
  - * Return checked and loaded header.
  - * @param ts		transaction set
  - * @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(rpmts ts, void * _fd, /*@out@*/ Header *hdrp,
  -		/*@out@*/ /*@null@*/ const char ** msg)
  -        /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
  -        /*@modifies ts, *_fd, *hdrp, *msg, rpmGlobalMacroContext,
  -                fileSystem, internalState @*/;
  -
   /**
    * Return package header from file handle, verifying digests/signatures.
    * @param ts		transaction set
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/.splintrc
  ============================================================================
  $ cvs diff -u -r1.8 -r1.9 .splintrc
  --- rpm/rpmdb/.splintrc	7 Oct 2007 14:00:13 -0000	1.8
  +++ rpm/rpmdb/.splintrc	14 Nov 2007 01:17:52 -0000	1.9
  @@ -1,4 +1,4 @@
  --I. -I.. -I../build -I../lib -I../rpmio -I../sqlite -I../beecrypt -I../popt -I../elfutils/libelf -DHAVE_CONFIG_H -D_GNU_SOURCE -D__STDC__=1
  +-I. -I.. -I../build -I../lib -I../rpmio -I../sqlite -I../xar/include -I../beecrypt -I../popt -I../elfutils/libelf -DHAVE_CONFIG_H -D_GNU_SOURCE -D__STDC__=1
   
   +partial
   +forcehints
  @@ -15,6 +15,25 @@
   +slovak-fcns
   -bufferoverflowhigh
   
  +-assignexpose
  +-compdef
  +-compmempass
  +-duplicatequals
  +-globs		# 3
  +-incondefs
  +-modobserver	# 9
  +-nullpass	# 2
  +-nullstate	# 2
  +-redecl
  +
  +-dependenttrans
  +-kepttrans
  +-observertrans
  +-onlytrans
  +-readonlytrans
  +-temptrans
  +-unqualifiedtrans
  +
   -internalglobs	# 35
   -unrecog	# 2 rpmcliPackagesTotal misplaced
   
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/db3.c
  ============================================================================
  $ cvs diff -u -r1.79 -r1.80 db3.c
  --- rpm/rpmdb/db3.c	12 Nov 2007 23:58:27 -0000	1.79
  +++ rpm/rpmdb/db3.c	14 Nov 2007 01:17:52 -0000	1.80
  @@ -1342,7 +1342,7 @@
   #define	PLD_CHROOT
   #ifdef	PLD_CHROOT
   	    if (rpmdb->db_chrootDone)
  -		dbenv->set_data_dir(dbenv, dbhome);
  +		xx = dbenv->set_data_dir(dbenv, dbhome);
   #endif
   	    rpmdb->db_opens++;
   	}
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/hdrNVR.c
  ============================================================================
  $ cvs diff -u -r1.29 -r1.30 hdrNVR.c
  --- rpm/rpmdb/hdrNVR.c	12 Nov 2007 13:54:49 -0000	1.29
  +++ rpm/rpmdb/hdrNVR.c	14 Nov 2007 01:17:52 -0000	1.30
  @@ -277,7 +277,7 @@
   	if (!headerIsEntry(h, he->tag)) {
   	    if (hdrchkType(he->t))
   		continue;
  -	    if (he->c < 0 || hdrchkData(he->c))
  +	    if (hdrchkData(he->c))
   		continue;
   	    switch(he->t) {
   	    default:
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/hdrfmt.c
  ============================================================================
  $ cvs diff -u -r1.31 -r1.32 hdrfmt.c
  --- rpm/rpmdb/hdrfmt.c	12 Nov 2007 13:54:49 -0000	1.31
  +++ rpm/rpmdb/hdrfmt.c	14 Nov 2007 01:17:52 -0000	1.32
  @@ -17,8 +17,6 @@
   
   #include "debug.h"
   
  -static int _jbj = 0;	/* XXX private debugging */
  -
   /*@access pgpDig @*/
   /*@access pgpDigParams @*/
   
  @@ -333,8 +331,6 @@
       int freeit = 0;
       int xx;
   
  -if (_jbj)
  -fprintf(stderr, " XML: tag %s(%d) %d %p[%d:%d] free %d\n", tagName(he->tag), he->tag, he->t, he->p.ptr, he->ix, he->c, he->freeData);
   assert(ix == 0);
   assert(he->t == RPM_STRING_TYPE || he->t == RPM_UINT64_TYPE || he->t == RPM_BIN_TYPE);
       switch (he->t) {
  @@ -497,8 +493,6 @@
       int xx;
       int c;
   
  -if (_jbj)
  -fprintf(stderr, "YAML: tag %s(%d) %d %p[%d:%d] free %d\n", tagName(he->tag), he->tag, he->t, he->p.ptr, he->ix, he->c, he->freeData);
   assert(ix == 0);
   assert(he->t == RPM_STRING_TYPE || he->t == RPM_UINT64_TYPE || he->t == RPM_BIN_TYPE);
       switch (he->t) {
  @@ -638,7 +632,7 @@
       if (!(he->t == RPM_BIN_TYPE)) {
   	val = xstrdup(_("(not a blob)"));
       } else {
  -	unsigned char * pkt = (byte *) data.ptr;
  +	unsigned char * pkt = data.ui8p;
   	unsigned int pktlen = 0;
   	unsigned int v = *pkt;
   	pgpTag tag = 0;
  @@ -736,7 +730,7 @@
   	/*@*/
   {
       rpmTagData data = { .ptr = he->p.ptr };
  -    int ix = (he->ix > 0 ? he->ix : 0);;
  +    int ix = (he->ix > 0 ? he->ix : 0);
       char * val;
   
   assert(ix == 0);
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/hdrinline.h
  ============================================================================
  $ cvs diff -u -r1.30 -r1.31 hdrinline.h
  --- rpm/rpmdb/hdrinline.h	12 Nov 2007 18:29:21 -0000	1.30
  +++ rpm/rpmdb/hdrinline.h	14 Nov 2007 01:17:52 -0000	1.31
  @@ -251,7 +251,9 @@
       return (h2hv(h)->hdrfreetag) (h, data, type);
   }
   
  -void tagTypeValidate(HE_t he);
  +void tagTypeValidate(HE_t he)
  +	/*@globals fileSystem @*/
  +	/*@modifies fileSystem @*/;
   
   /*
    * Retrieve extension or tag value.
  @@ -268,8 +270,10 @@
       int xx;
       if (h == NULL) return 0;
       xx = (h2hv(h)->hdrext) (h, he->tag, &he->t, &he->p, &he->c);
  +/*@-modfilesys@*/
   /* XXX verify that explicit and implicit types are identical. */
   if (xx) tagTypeValidate(he);
  +/*@=modfilesys@*/
       return xx;
   }
   
  @@ -287,8 +291,10 @@
   	/*@modifies h @*/
   {
       int xx;
  +/*@-modfilesys@*/
   /* XXX verify that explicit and implicit types are identical. */
   tagTypeValidate(he);
  +/*@=modfilesys@*/
       if (he->append)
   	xx = (h2hv(h)->hdraddorappend) (h, he->tag, he->t, he->p.ptr, he->c);
       else
  @@ -359,7 +365,7 @@
    * @return		1 on success, 0 on failure
    */
   /*@unused@*/ static inline
  -int headerNextExtension(HeaderIterator hi, HE_t he, unsigned int flags)
  +int headerNextExtension(HeaderIterator hi, HE_t he, /*@unused@*/ unsigned int flags)
   	/*@modifies hi, he @*/
   {
       return hdrVec->hdrnextiter(hi, &he->tag, &he->t, &he->p, &he->c);
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/header.c
  ============================================================================
  $ cvs diff -u -r1.117 -r1.118 header.c
  --- rpm/rpmdb/header.c	12 Nov 2007 18:29:21 -0000	1.117
  +++ rpm/rpmdb/header.c	14 Nov 2007 01:17:52 -0000	1.118
  @@ -1914,6 +1914,7 @@
   	break;
       case RPM_I18NSTRING_TYPE:
   assert(he->c == 1);	/* XXX stop unimplemented oversights. */
  +	/*@fallthrough@*/
       case RPM_STRING_TYPE:
   	if (he->p.str)
   	    nb = strlen(he->p.str) + 1;
  @@ -2053,7 +2054,7 @@
       int length;
   
       /* Count must always be >= 1 for headerAddEntry. */
  -    if (c <= 0)
  +    if (c == 0)
   	return 0;
   
       if (hdrchkType(type))
  @@ -2386,7 +2387,8 @@
    * Mark a tag container with headerGetEntry() freeData.
    * @param he		tag container
    */
  -static HE_t rpmheMark(/*@null@*/ HE_t he)
  +/*@relnull@*/
  +static HE_t rpmheMark(/*@returned@*/ /*@null@*/ HE_t he)
   	/*@modifies he @*/
   {
       /* Set he->freeData as appropriate for headerGetEntry() . */
  @@ -2408,7 +2410,8 @@
    * Clean a tag container, free'ing attached malloc's..
    * @param he		tag container
    */
  -static HE_t rpmheClean(/*@null@*/ HE_t he)
  +/*@relnull@*/
  +static HE_t rpmheClean(/*@returned@*/ /*@null@*/ HE_t he)
   	/*@modifies he @*/
   {
       if (he) {
  @@ -2834,12 +2837,14 @@
    * @return		formatted string
    */
   static char * intFormat(HE_t he, const char *fmt)
  +	/*@*/
   {
       int ix = (he->ix > 0 ? he->ix : 0);
       int_64 ival = 0;
       const char * istr = NULL;
       char * b;
       size_t nb = 0;
  +    int xx;
   
       if (fmt == NULL || *fmt == '\0')
   	fmt = "d";
  @@ -2847,7 +2852,7 @@
       switch (he->t) {
       default:
   	return xstrdup(_("(not a number)"));
  -	break;
  +	/*@notreached@*/ break;
       case RPM_UINT8_TYPE:
   	ival = he->p.ui8p[ix];
   	break;
  @@ -2892,7 +2897,9 @@
   	myfmt[3] = *fmt;
   	nb = 64;
   	b = alloca(nb);
  -	snprintf(b, nb, myfmt, ival);
  +/*@-formatconst@*/
  +	xx = snprintf(b, nb, myfmt, ival);
  +/*@=formatconst@*/
   	b[nb-1] = '\0';
       }
   
  @@ -2997,17 +3004,18 @@
       rpmTagData data = { .ptr = he->p.ptr };
       char * val;
       size_t nb;
  +    int xx;
   
       /* XXX one of these integer types is unnecessary. */
       if (he->t == RPM_UINT32_TYPE) {
   	nb = 20;
   	val = xmalloc(nb);
  -	snprintf(val, nb, "%u", data.ui32p[0]);
  +	xx = snprintf(val, nb, "%u", data.ui32p[0]);
   	val[nb-1] = '\0';
       } else if (he->t == RPM_UINT64_TYPE) {
   	nb = 40;
   	val = xmalloc(40);
  -	snprintf(val, nb, "%llu", (unsigned long long)data.ui64p[0]);
  +	xx = snprintf(val, nb, "%llu", (unsigned long long)data.ui64p[0]);
   	val[nb-1] = '\0';
       } else if (he->t == RPM_STRING_TYPE) {
   	const char * s = data.str;
  @@ -3167,7 +3175,7 @@
   		    i = strtoul(start, &start, 10);
   		    token->u.tag.pad += i;
   		    start = chptr;
  -		    break;
  +		    /*@innerbreak@*/ break;
   		} else {
   		    start++;
   		}
  @@ -3302,10 +3310,10 @@
   	token = format + i;
   	switch(token->type) {
   	default:
  -	    break;
  +	    /*@switchbreak@*/ break;
   	case PTOK_STRING:
   	    token->u.string.len = strlen(token->u.string.string);
  -	    break;
  +	    /*@switchbreak@*/ break;
   	}
       }
   
  @@ -3447,7 +3455,8 @@
    */
   /*@observer@*/ /*@null@*/
   static char * formatValue(headerSprintfArgs hsa, sprintfTag tag, int element)
  -	/*@modifies hsa @*/
  +	/*@globals headerCompoundFormats @*/
  +	/*@modifies hsa, tag, headerCompoundFormats @*/
   {
       HE_t vhe = memset(alloca(sizeof(*vhe)), 0, sizeof(*vhe));
       HE_t he = &tag->he;
  @@ -3520,19 +3529,19 @@
   	switch (he->t) {
   	default:
   assert(0);	/* XXX keep gcc quiet. */
  -	    break;
  +	    /*@innerbreak@*/ break;
   	case RPM_UINT8_TYPE:
   	    ival = he->p.ui8p[element];
  -	    break;
  +	    /*@innerbreak@*/ break;
   	case RPM_UINT16_TYPE:
   	    ival = he->p.ui16p[element];	/* XXX note unsigned. */
  -	    break;
  +	    /*@innerbreak@*/ break;
   	case RPM_UINT32_TYPE:
   	    ival = he->p.ui32p[element];
  -	    break;
  +	    /*@innerbreak@*/ break;
   	case RPM_UINT64_TYPE:
   	    ival = he->p.ui64p[element];
  -	    break;
  +	    /*@innerbreak@*/ break;
   	}
   	vhe->t = RPM_UINT64_TYPE;
   	vhe->p.ui64p = &ival;
  @@ -3553,7 +3562,7 @@
   	val = tag->fmt(vhe);
       else
   	val = intFormat(vhe, NULL);
  -assert(val);
  +assert(val != NULL);
       if (val)
   	need = strlen(val) + 1;
   
  @@ -3569,7 +3578,9 @@
   	    (void) stpcpy( stpcpy( stpcpy(t, "%"), tag->format), "s");
   	    nb = tag->pad + strlen(val) + 1;
   	    te = xmalloc(nb);
  +/*@-formatconst@*/
   	    (void) snprintf(te, nb, t, val);
  +/*@=formatconst@*/
   	    te[nb-1] = '\0';
   	    val = _free(val);
   	    val = te;
  @@ -3594,7 +3605,8 @@
   /*@observer@*/
   static char * singleSprintf(headerSprintfArgs hsa, sprintfToken token,
   		int element)
  -	/*@modifies hsa @*/
  +	/*@globals headerCompoundFormats @*/
  +	/*@modifies hsa, token, headerCompoundFormats @*/
   {
       char numbuf[64];	/* XXX big enuf for "Tag_0x01234567" */
       char * t, * te;
  @@ -3672,7 +3684,7 @@
   		    } else {
   			xx = headerGetEntry(hsa->h, he->tag, &he->t, &he->p, &he->c);
   			if (xx)	/* XXX 1 on success */
  -			    rpmheMark(he);
  +			    he = rpmheMark(he);
   		    }
   		    xx = (xx == 0);     /* XXX invert headerGetEntry return. */
   		}
  @@ -3815,7 +3827,7 @@
    */
   static /*@only@*/ HE_t
   rpmecNew(const headerSprintfExtension exts, /*@null@*/ int * necp)
  -	/*@*/
  +	/*@modifies *necp @*/
   {
       headerSprintfExtension ext;
       HE_t ec;
  @@ -3872,7 +3884,8 @@
   		/*@null@*/ const struct headerTagTableEntry_s * tags,
   		/*@null@*/ const struct headerSprintfExtension_s * exts,
   		/*@null@*/ /*@out@*/ errmsg_t * errmsg)
  -	/*@modifies h, *errmsg @*/
  +	/*@globals headerCompoundFormats @*/
  +	/*@modifies h, *errmsg, headerCompoundFormats @*/
   	/*@requires maxSet(errmsg) >= 0 @*/
   {
       headerSprintfArgs hsa = memset(alloca(sizeof(*hsa)), 0, sizeof(*hsa));
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/header.h
  ============================================================================
  $ cvs diff -u -r1.63 -r1.64 header.h
  --- rpm/rpmdb/header.h	13 Nov 2007 00:34:11 -0000	1.63
  +++ rpm/rpmdb/header.h	14 Nov 2007 01:17:52 -0000	1.64
  @@ -152,6 +152,7 @@
   typedef union rpmDataType_u hRET_t;
   #if !defined(SWIG)
   union rpmDataType_u {
  +/*@null@*/
       void * ptr;
       uint8_t * ui8p;		/*!< RPM_INT8_TYPE | RPM_CHAR_TYPE */
       uint16_t * ui16p;		/*!< RPM_INT16_TYPE */
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/pkgio.c
  ============================================================================
  $ cvs diff -u -r1.31 -r1.32 pkgio.c
  --- rpm/rpmdb/pkgio.c	13 Nov 2007 00:34:11 -0000	1.31
  +++ rpm/rpmdb/pkgio.c	14 Nov 2007 01:17:52 -0000	1.32
  @@ -49,8 +49,6 @@
   /*@unchecked@*/
   static int _print_pkts = 0;
   
  -static int _jbj = 0;
  -
   /*===============================================*/
   
   rpmop rpmtsOp(rpmts ts, rpmtsOpX opx)
  @@ -381,7 +379,8 @@
    */
   static rpmRC rdLead(FD_t fd, /*@out@*/ /*@null@*/ void * ptr,
   		const char ** msg)
  -	/*@modifies *ptr, *msg @*/
  +	/*@globals fileSystem @*/
  +	/*@modifies *ptr, *msg, fileSystem @*/
   {
   rpmwf wf = fdGetWF(fd);
       struct rpmlead ** leadp = ptr;
  @@ -390,8 +389,6 @@
       rpmRC rc = RPMRC_FAIL;		/* assume failure */
       int xx;
   
  -if (_jbj)
  -fprintf(stderr, "==> rdLead(%p, %p, %p)\n", fd, ptr, msg);
       buf[0] = '\0';
       if (leadp != NULL) *leadp = NULL;
   
  @@ -575,8 +572,6 @@
       int xx;
       int i;
   
  -if (_jbj)
  -fprintf(stderr, "==> rdSignature(%p, %p, %p)\n", fd, ptr, msg);
       buf[0] = '\0';
       if (sighp)
   	*sighp = NULL;
  @@ -1080,10 +1075,6 @@
       /* XXX headerCheck can recurse, free info only at top level. */
       if (hclvl == 1)
   	rpmtsCleanDig(ts);
  -#ifdef	DYING
  -    if (info->tag == RPMTAG_SHA1HEADER)
  -	sig = _free(sig);
  -#endif
       hclvl--;
       return rc;
   }
  @@ -1128,6 +1119,7 @@
       return rc;
   }
   
  +/*@-mustmod@*/	/* _fd is modified */
   rpmRC rpmReadHeader(rpmts ts, void * _fd, Header *hdrp, const char ** msg)
   {
       FD_t fd = _fd;
  @@ -1156,8 +1148,6 @@
   if (wf != NULL) {
       if ((rc = rpmwfNextXAR(wf)) != RPMRC_OK) return rc;
       if ((rc = rpmwfPullXAR(wf, "Header")) != RPMRC_OK) return rc;
  -if (_jbj)
  -fprintf(stderr, "==> wf->h %p[%d]\n", wf->h, (int)wf->nh);
   assert(wf->nh > sizeof(block));
       memcpy(block, wf->h, sizeof(block));
   } else {
  @@ -1240,6 +1230,7 @@
   
       return rc;
   }
  +/*@=mustmod@*/
   
   /**
    * Read metadata header.
  @@ -1258,16 +1249,12 @@
       Header h = NULL;
       rpmRC rc = RPMRC_OK;
   
  -if (_jbj)
  -fprintf(stderr, "==> rdHeader(%p, %p, %p)\n", fd, ptr, msg);
       if (msg)
   	*msg = NULL;
   
   if (wf != NULL) {
       if ((rc = rpmwfNextXAR(wf)) != RPMRC_OK) return rc;
       if ((rc = rpmwfPullXAR(wf, "Header")) != RPMRC_OK) return rc;
  -if (_jbj)
  -fprintf(stderr, "==> wf->h %p[%d]\n", wf->h, (int)wf->nh);
       h = headerLoad(wf->h);
   } else {
       h = headerRead(fd);
  @@ -1311,8 +1298,6 @@
   {
       size_t len = 0;
   
  -if (_jbj)
  -fprintf(stderr, "==> rpmpkgSizeof(%s, %p)\n", fn, ptr);
       if (!strcmp(fn, "Lead"))
   	len = 96;	/* RPMLEAD_SIZE */
       else
  @@ -1329,8 +1314,6 @@
   {
       rpmRC rc = RPMRC_FAIL;
   
  -if (_jbj)
  -fprintf(stderr, "==> rpmpkgCheck(%s, %p, %p, %p)\n", fn, fd, ptr, msg);
       if (!strcmp(fn, "Header"))
   	rc = ckHeader(fd, ptr, msg);
       return rc;
  @@ -1340,8 +1323,6 @@
   {
       rpmRC rc = RPMRC_FAIL;
   
  -if (_jbj)
  -fprintf(stderr, "==> rpmpkgRead(%s, %p, %p, %p) use_xar %d\n", fn, fd, ptr, msg, _use_xar);
   if (_use_xar) {
   rpmwf wf = fdGetWF(fd);
   if (wf == NULL) {
  @@ -1367,8 +1348,6 @@
   {
       rpmRC rc = RPMRC_FAIL;
   
  -if (_jbj)
  -fprintf(stderr, "==> rpmpkgWrite(%s, %p, %p, %p) use_xar %d\n", fn, fd, ptr, msg, _use_xar);
       if (!strcmp(fn, "Lead"))
   	rc = wrLead(fd, ptr, msg);
       else
  @@ -1385,7 +1364,9 @@
       rpmwf wf = fdGetWF(fd);
       if (wf != NULL) {
   	fdSetWF(fd, NULL);
  +/*@-modfilesys@*/
   	wf = rpmwfFree(wf);
  +/*@=modfilesys@*/
       }
       return RPMRC_OK;
   }
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/pkgio.h
  ============================================================================
  $ cvs diff -u -r1.7 -r1.8 pkgio.h
  --- rpm/rpmdb/pkgio.h	11 Nov 2007 02:23:44 -0000	1.7
  +++ rpm/rpmdb/pkgio.h	14 Nov 2007 01:17:52 -0000	1.8
  @@ -34,6 +34,19 @@
   	/*@globals fileSystem, internalState @*/
   	/*@modifies ts, *msg, fileSystem, internalState @*/;
   
  +/** 
  + * Return checked and loaded header.
  + * @param ts		transaction set
  + * @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(rpmts ts, void * _fd, /*@out@*/ Header *hdrp,
  +		/*@out@*/ /*@null@*/ const char ** msg)
  +        /*@globals fileSystem, internalState @*/
  +        /*@modifies ts, *_fd, *hdrp, *msg, fileSystem, internalState @*/;
  +
   /**
    * Return size of item in bytes.
    * @param fn		item name
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/rpmdb.c
  ============================================================================
  $ cvs diff -u -r1.205 -r1.206 rpmdb.c
  --- rpm/rpmdb/rpmdb.c	12 Nov 2007 13:54:49 -0000	1.205
  +++ rpm/rpmdb/rpmdb.c	14 Nov 2007 01:17:52 -0000	1.206
  @@ -3356,7 +3356,7 @@
   	    }
   
   	    /* Anything to do? */
  -	    if (he->c <= 0)
  +	    if (he->c == 0)
   		continue;
   
   	  dbi = dbiOpen(db, he->tag, 0);
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/rpmwf.c
  ============================================================================
  $ cvs diff -u -r1.6 -r1.7 rpmwf.c
  --- rpm/rpmdb/rpmwf.c	13 Nov 2007 00:34:11 -0000	1.6
  +++ rpm/rpmdb/rpmwf.c	14 Nov 2007 01:17:52 -0000	1.7
  @@ -12,22 +12,31 @@
   
   #include "debug.h"
   
  +/*@access FD_t @*/
  +
  +/*@unchecked@*/
   int _rpmwf_debug = 0;
   
   rpmRC rpmwfFiniXAR(rpmwf wf)
   {
  +    int xx;
  +
   if (_rpmwf_debug)
   fprintf(stderr, "*** rpmwfFiniXAR(%p)\n", wf);
   #ifdef WITH_XAR
  +/*@-moduncon@*/
       if (wf->i) {
  +/*@-noeffectuncon@*/
   	xar_iter_free(wf->i);
  +/*@=noeffectuncon@*/
   	wf->i = NULL;
       }
       if (wf->x) {
  -	xar_close(wf->x);
  +	xx = xar_close(wf->x);
   	wf->x = NULL;
       }
       return RPMRC_OK;
  +/*@=moduncon@*/
   #else
       return RPMRC_FAIL;
   #endif
  @@ -43,15 +52,17 @@
   fprintf(stderr, "*** rpmwfInitXAR(%p, %s, %s)\n", wf, fn, fmode);
       if (fn == NULL)
   	fn = wf->fn;
  -assert(fn);
  +assert(fn != NULL);
       
   #ifdef WITH_XAR
  +/*@-moduncon@*/
       wf->x = xar_open(fn, flags);
       if (flags == READ) {
   	wf->i = xar_iter_new();
   	wf->first = 1;
       }
       return RPMRC_OK;
  +/*@=moduncon@*/
   #else
       return RPMRC_FAIL;
   #endif
  @@ -62,11 +73,13 @@
   if (_rpmwf_debug)
   fprintf(stderr, "*** rpmwfNextXAR(%p) first %d\n", wf, wf->first);
   #ifdef WITH_XAR
  +/*@-moduncon@*/
       if (wf->first) {
   	wf->f = xar_file_first(wf->x, wf->i);
   	wf->first = 0;
       } else
   	wf->f = xar_file_next(wf->i);
  +/*@=moduncon@*/
   #endif
   
       if (wf->f == NULL)
  @@ -98,7 +111,9 @@
   
       if (wf->x && b && nb > 0) {
   #ifdef WITH_XAR
  +/*@-moduncon@*/
   	wf->f = xar_add_frombuffer(wf->x, NULL, fn, b, nb);
  +/*@=moduncon@*/
   	if (wf->f == NULL)
   #endif
   	    return RPMRC_FAIL;
  @@ -110,7 +125,9 @@
   {
       rpmRC rc = RPMRC_OK;
   #ifdef WITH_XAR
  +/*@-moduncon@*/
       const char * path = xar_get_path(wf->f);
  +/*@=moduncon@*/
   #else
       const char * path = "*** WITHOUT_XAR ***";
   #endif
  @@ -122,13 +139,17 @@
       const char * name = NULL;
       const char * type = NULL;
   
  +/*@-moduncon@*/
       xx = xar_prop_get(wf->f, "name", &name);
  +/*@=moduncon@*/
   if (_rpmwf_debug)
   fprintf(stderr, "*** xx %d name %s\n", xx, name);
       if (xx || name == NULL)
   	return RPMRC_NOTFOUND;
   
  +/*@-moduncon@*/
       xx = xar_prop_get(wf->f, "type", &type);
  +/*@=moduncon@*/
   if (_rpmwf_debug)
   fprintf(stderr, "*** xx %d type %s\n", xx, type);
       if (xx || type == NULL || strcmp(type, "file"))
  @@ -141,7 +162,9 @@
   	assert(!strcmp(fn, path));
   
   #ifdef WITH_XAR
  +/*@-moduncon@*/
       xx = xar_extract_tobuffersz(wf->x, wf->f, &b, &nb);
  +/*@=moduncon@*/
   #endif
   if (_rpmwf_debug)
   fprintf(stderr, "*** xx %d %p[%lu]\n", xx, b, (unsigned long)nb);
  @@ -190,6 +213,7 @@
   }
   
   static size_t hSize(uint_32 *p)
  +	/*@*/
   {
       return (8 + 8 + 16 * ntohl(p[2]) + ntohl(p[3]));
   }
  @@ -200,7 +224,7 @@
   fprintf(stderr, "*** rpmwfInitRPM(%p, %s, %s)\n", wf, fn, fmode);
       if (fn == NULL)
   	fn = wf->fn;
  -assert(fn);
  +assert(fn != NULL);
   
       wf->fd = Fopen(fn, fmode);
   if (_rpmwf_debug)
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/rpmwf.h
  ============================================================================
  $ cvs diff -u -r1.2 -r1.3 rpmwf.h
  --- rpm/rpmdb/rpmwf.h	11 Nov 2007 15:00:08 -0000	1.2
  +++ rpm/rpmdb/rpmwf.h	14 Nov 2007 01:17:52 -0000	1.3
  @@ -9,15 +9,21 @@
   #ifdef	_RPMWF_INTERNAL
   struct rpmwf_s {
       const char * fn;
  +/*@relnull@*/
       FD_t fd;
  +/*@relnull@*/
       void * b;
       size_t nb;
  +/*@relnull@*/
       char * l;
       size_t nl;
  +/*@relnull@*/
       char * s;
       size_t ns;
  +/*@relnull@*/
       char * h;
       size_t nh;
  +/*@relnull@*/
       char * p;
       size_t np;
   #ifdef WITH_XAR
  @@ -35,46 +41,59 @@
   #endif
   
   rpmRC rpmwfFiniXAR(rpmwf wf)
  -	/*@*/;
  +	/*@globals fileSystem @*/
  +	/*@modifies wf, fileSystem @*/;
   
   rpmRC rpmwfInitXAR(rpmwf wf, const char * fn, const char * fmode)
  -	/*@*/;
  +	/*@globals fileSystem @*/
  +	/*@modifies wf, fileSystem @*/;
   
   rpmRC rpmwfNextXAR(rpmwf wf)
  -	/*@*/;
  +	/*@globals fileSystem @*/
  +	/*@modifies wf, fileSystem @*/;
   
   rpmRC rpmwfPushXAR(rpmwf wf, const char * fn)
  -	/*@*/;
  +	/*@modifies wf @*/;
   
   rpmRC rpmwfPullXAR(rpmwf wf, const char * fn)
  -	/*@*/;
  +	/*@globals fileSystem @*/
  +	/*@modifies wf, fileSystem @*/;
   
   rpmRC rpmwfFiniRPM(rpmwf wf)
  -	/*@*/;
  +	/*@globals fileSystem @*/
  +	/*@modifies wf, fileSystem @*/;
   
   rpmRC rpmwfInitRPM(rpmwf wf, const char * fn, const char * fmode)
  -	/*@*/;
  +	/*@globals fileSystem @*/
  +	/*@modifies wf, fileSystem @*/;
   
   rpmRC rpmwfPushRPM(rpmwf wf, const char * fn)
  -	/*@*/;
  +	/*@globals fileSystem @*/
  +	/*@modifies wf, fileSystem @*/;
   
  -rpmwf rpmwfFree(rpmwf wf)
  -	/*@*/;
  +rpmwf rpmwfFree(/*@only@*/ rpmwf wf)
  +	/*@globals fileSystem @*/
  +	/*@modifies wf, fileSystem @*/;
   
   rpmwf rpmwfNew(const char * fn)
  -	/*@*/;
  +	/*@globals fileSystem @*/
  +	/*@modifies fileSystem @*/;
   
   rpmwf rdRPM(const char * rpmfn)
  -	/*@*/;
  +	/*@globals fileSystem @*/
  +	/*@modifies wf, fileSystem @*/;
   
   rpmwf rdXAR(const char * xarfn)
  -	/*@*/;
  +	/*@globals fileSystem @*/
  +	/*@modifies wf, fileSystem @*/;
   
   rpmRC wrXAR(const char * xarfn, rpmwf wf)
  -	/*@*/;
  +	/*@globals fileSystem @*/
  +	/*@modifies wf, fileSystem @*/;
   
   rpmRC wrRPM(const char * rpmfn, rpmwf wf)
  -	/*@*/;
  +	/*@globals fileSystem @*/
  +	/*@modifies wf, fileSystem @*/;
   
   
   #ifdef __cplusplus
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/signature.c
  ============================================================================
  $ cvs diff -u -r1.19 -r1.20 signature.c
  --- rpm/rpmdb/signature.c	13 Nov 2007 01:54:55 -0000	1.19
  +++ rpm/rpmdb/signature.c	14 Nov 2007 01:17:52 -0000	1.20
  @@ -518,6 +518,7 @@
    * @param passPhrase	private key pass phrase
    * @return		0 on success, -1 on failure
    */
  +/*@-mustmod@*/ /* sigh is modified */
   static int makeHDRSignature(Header sigh, const char * file, uint32_t sigTag,
   		/*@null@*/ const char * passPhrase)
   	/*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
  @@ -652,6 +653,7 @@
       if (fd != NULL) (void) Fclose(fd);
       return ret;
   }
  +/*@=mustmod@*/
   
   int rpmAddSignature(Header sigh, const char * file, uint32_t sigTag,
   		const char * passPhrase)
  @@ -1355,7 +1357,7 @@
       uint32_t sigtag = pgpGetSigtag(dig);
       rpmRC res;
   
  -    if (dig == NULL || sig == NULL || siglen <= 0) {
  +    if (dig == NULL || sig == NULL || siglen == 0) {
   	sprintf(result, _("Verify signature: BAD PARAMETERS\n"));
   	return RPMRC_NOTFOUND;
       }
  @@ .
Received on Wed Nov 14 02:17:53 2007
Driven by Jeff Johnson and the RPM project team.
Hosted by OpenPKG and Ralf S. Engelschall.
Powered by FreeBSD and OpenPKG.