RPM Community Forums

Mailing List Message of <rpm-cvs>

[CVS] RPM: rpm/ CHANGES rpm/rpmdb/ .splintrc dbconfig.c fprint.c hdrNV...

From: Jeff Johnson <jbj@rpm5.org>
Date: Thu 15 Nov 2007 - 00:56:35 CET
Message-Id: <20071114235635.9001E348476@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:   15-Nov-2007 00:56:35
  Branch: HEAD                             Handle: 2007111423563302

  Modified files:
    rpm                     CHANGES
    rpm/rpmdb               .splintrc dbconfig.c fprint.c hdrNVR.c hdrfmt.c
                            header.c merge.c pkgio.c rpmdb.c rpmwf.c rpmwf.h
                            signature.c sqlite.c tagname.c
    rpm/rpmio               rpmio.h rpmio_internal.h

  Log:
    - jbj: get rid of splint spew before chasing header.c integers.

  Summary:
    Revision    Changes     Path
    1.1825      +1  -0      rpm/CHANGES
    1.11        +24 -42     rpm/rpmdb/.splintrc
    1.49        +4  -4      rpm/rpmdb/dbconfig.c
    1.22        +1  -1      rpm/rpmdb/fprint.c
    1.32        +5  -0      rpm/rpmdb/hdrNVR.c
    1.34        +15 -13     rpm/rpmdb/hdrfmt.c
    1.119       +44 -16     rpm/rpmdb/header.c
    1.10        +2  -2      rpm/rpmdb/merge.c
    1.34        +16 -10     rpm/rpmdb/pkgio.c
    1.208       +28 -19     rpm/rpmdb/rpmdb.c
    1.9         +6  -0      rpm/rpmdb/rpmwf.c
    1.4         +7  -7      rpm/rpmdb/rpmwf.h
    1.22        +13 -11     rpm/rpmdb/signature.c
    1.22        +4  -4      rpm/rpmdb/sqlite.c
    1.12        +1  -1      rpm/rpmdb/tagname.c
    1.60        +8  -8      rpm/rpmio/rpmio.h
    2.86        +7  -2      rpm/rpmio/rpmio_internal.h
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/CHANGES
  ============================================================================
  $ cvs diff -u -r1.1824 -r1.1825 CHANGES
  --- rpm/CHANGES	14 Nov 2007 21:13:17 -0000	1.1824
  +++ rpm/CHANGES	14 Nov 2007 23:56:33 -0000	1.1825
  @@ -1,4 +1,5 @@
   5.0a1 -> 5.0a2:
  +    - jbj: get rid of splint spew before chasing header.c integers.
       - jbj: use splint to check integral types, eliminate the easy stuff.
       - jbj: splint fiddles for rpmdb.
       - jbj: don't cache unsatisfied Suggests:.
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/.splintrc
  ============================================================================
  $ cvs diff -u -r1.10 -r1.11 .splintrc
  --- rpm/rpmdb/.splintrc	14 Nov 2007 21:13:18 -0000	1.10
  +++ rpm/rpmdb/.splintrc	14 Nov 2007 23:56:33 -0000	1.11
  @@ -15,26 +15,10 @@
   +slovak-fcns
   -bufferoverflowhigh
   
  --assignexpose
  --compdef
  --compmempass
  --duplicatequals
  --globs		# 3
  --incondefs
  --modobserver	# 9
  --nullpass	# 2
  --nullstate	# 2
  --redecl
  -
  --dependenttrans
  --kepttrans
  --observertrans
  --onlytrans
  --readonlytrans
  --temptrans
  --unqualifiedtrans
  +-incondefs	# 5
  +-nullpass	# 10
   
  --internalglobs	# 35
  +-internalglobs	# 81
   -unrecog	# 2 rpmcliPackagesTotal misplaced
   
   # --- +partial artifacts
  @@ -48,36 +32,34 @@
   -varuse
   
   # --- not-yet at strict level
  --bitwisesigned		# 160
  +-bitwisesigned		# 228
   -branchstate		# 65
  --elseifcomplete		# 9
  --exportconst		# 687
  --exportfcn		# 464
  --exporttype		# 196
  --exportvar		# 55
  --fielduse		# 225 occurence <bits/sigset.h>
  +-elseifcomplete		# 20
  +-exportconst		# 857
  +-exportfcn		# 509
  +-exporttype		# 167
  +-exportvar		# 93
  +-fielduse		# 266
   -forblock		# tedious
   -ifblock		# tedious
  --namechecks		# 1679
  --ptrarith		# 201
  +-namechecks		# 1632
  +-ptrarith		# 251
   
  --compdestroy		# 125
  --mustdefine		# 76
  --sys-dir-errors
  +-compdestroy		# 158
  +-mustdefine		# 84
  +-sys-dir-errors		# 523
   
  --strictops		# 54
  --strictusereleased	# 3
  +-strictops		# 85
   -whileblock		# 20
   
   # --- not-yet at checks level
  -+enumint		# 211
  --mustfree		# 219
  --predboolptr		# 107
  --usedef			# 42
  ++enumint		# 578
  +-mustfree		# 470
  +-predboolptr		# 195
  +-usedef			# 16
   
   # --- not-yet at standard level
  --boolops		# 81
  -+boolint		# 18
  -+charint		# 74
  -+ignorequals		# 104
  -#+matchanyintegral	# 90
  +-boolops		# 136
  ++boolint		# 407
  ++ignorequals		# 165
  ++matchanyintegral	# 130
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/dbconfig.c
  ============================================================================
  $ cvs diff -u -r1.48 -r1.49 dbconfig.c
  --- rpm/rpmdb/dbconfig.c	12 Nov 2007 10:57:13 -0000	1.48
  +++ rpm/rpmdb/dbconfig.c	14 Nov 2007 23:56:33 -0000	1.49
  @@ -33,7 +33,7 @@
   static int dbi_tear_down;
   #endif
   
  -/*@-compmempass -immediatetrans -exportlocal -exportheadervar@*/
  +/*@-compmempass -immediatetrans -exportlocal -exportheadervar -type@*/
   /** \ingroup db3
    */
   /*@unchecked@*/
  @@ -629,7 +629,7 @@
   
       POPT_TABLEEND
   };
  -/*@=compmempass =immediatetrans =exportlocal =exportheadervar@*/
  +/*@=compmempass =immediatetrans =exportlocal =exportheadervar =type@*/
   
   dbiIndex db3Free(dbiIndex dbi)
   {
  @@ -681,12 +681,12 @@
   	    int argInfo;
   
   	    /* Skip leading white space. */
  -	    while (*o && xisspace(*o))
  +	    while (*o && xisspace((int)*o))
   		o++;
   
   	    /* Find and terminate next key=value pair. Save next start point. */
   	    for (oe = o; oe && *oe; oe++) {
  -		if (xisspace(*oe))
  +		if (xisspace((int)*oe))
   		    /*@innerbreak@*/ break;
   		if (oe[0] == ':' && !(oe[1] == '/' && oe[2] == '/'))
   		    /*@innerbreak@*/ break;
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/fprint.c
  ============================================================================
  $ cvs diff -u -r1.21 -r1.22 fprint.c
  --- rpm/rpmdb/fprint.c	14 Nov 2007 21:13:18 -0000	1.21
  +++ rpm/rpmdb/fprint.c	14 Nov 2007 23:56:33 -0000	1.22
  @@ -187,7 +187,7 @@
   {
       const fingerPrint * fp = data;
       const char * chptr = fp->baseName;
  -    unsigned char ch = 0;
  +    unsigned char ch = '\0';
   
       while (*chptr != '\0') ch ^= *chptr++;
   
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/hdrNVR.c
  ============================================================================
  $ cvs diff -u -r1.31 -r1.32 hdrNVR.c
  --- rpm/rpmdb/hdrNVR.c	14 Nov 2007 21:13:18 -0000	1.31
  +++ rpm/rpmdb/hdrNVR.c	14 Nov 2007 23:56:33 -0000	1.32
  @@ -43,6 +43,7 @@
       uint64_t ival;
       int xx;
   
  +    numbuf[0] = '\0';
       /* XXX pre-expand %{buildroot} (if any) */
       {   const char *s = rpmExpand("%{?buildroot}", NULL);
   	if (s && *s) 
  @@ -90,8 +91,10 @@
   	}
   	
   	if (val) {
  +/*@-duplicatequals@*/
   	    if (val == numbuf)
   		sprintf(numbuf, "%llu", (unsigned long long)ival);
  +/*@=duplicatequals@*/
   	    addMacro(NULL, tagm->macroname, NULL, val, -1);
   	}
   	he->p.ptr = _free(he->p.ptr);
  @@ -158,6 +161,7 @@
       rpmTagData p;
       rpmTagCount c;
   
  +/*@-onlytrans@*/
       if (np) {
   	if (headerGetEntry(h, RPMTAG_NAME, &t, &p, &c)
   	 && t == RPM_STRING_TYPE && c == 1)
  @@ -194,6 +198,7 @@
   	else
   	    *ap = NULL;
       }
  +/*@=onlytrans@*/
       return 0;
   }
   
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/hdrfmt.c
  ============================================================================
  $ cvs diff -u -r1.33 -r1.34 hdrfmt.c
  --- rpm/rpmdb/hdrfmt.c	14 Nov 2007 21:13:18 -0000	1.33
  +++ rpm/rpmdb/hdrfmt.c	14 Nov 2007 23:56:33 -0000	1.34
  @@ -276,7 +276,7 @@
       size_t len = 0;
       int c;
   
  -    while ((c = *s++) != '\0')
  +    while ((c = (int) *s++) != (int) '\0')
       {
   	switch (c) {
   	case '<':
  @@ -300,12 +300,12 @@
       char * te = t;
       int c;
   
  -    while ((c = *s++) != '\0') {
  +    while ((c = (int) *s++) != (int) '\0') {
   	switch (c) {
   	case '<':	te = stpcpy(te, "&lt;");	/*@switchbreak@*/ break;
   	case '>':	te = stpcpy(te, "&gt;");	/*@switchbreak@*/ break;
   	case '&':	te = stpcpy(te, "&amp;");	/*@switchbreak@*/ break;
  -	default:	*te++ = c;			/*@switchbreak@*/ break;
  +	default:	*te++ = (char) c;		/*@switchbreak@*/ break;
   	}
       }
       *te = '\0';
  @@ -426,13 +426,13 @@
       int indent = (lvl > 0);
       int c;
   
  -    while ((c = *s++) != '\0')
  +    while ((c = (int) *s++) != (int) '\0')
       {
   	if (indent) {
   	    len += 2 * lvl;
   	    indent = 0;
   	}
  -	if (c == '\n')
  +	if (c == (int) '\n')
   	    indent = (lvl > 0);
   	len++;
       }
  @@ -453,7 +453,7 @@
       int indent = (lvl > 0);
       int c;
   
  -    while ((c = *s++) != '\0') {
  +    while ((c = (int) *s++) != (int) '\0') {
   	if (indent) {
   	    int i;
   	    for (i = 0; i < lvl; i++) {
  @@ -462,9 +462,9 @@
   	    }
   	    indent = 0;
   	}
  -	if (c == '\n')
  +	if (c == (int) '\n')
   	    indent = (lvl > 0);
  -	*te++ = c;
  +	*te++ = (char) c;
       }
       *te = '\0';
       return t;
  @@ -504,7 +504,7 @@
   	if (strchr("[", s[0]))	/* leading [ */
   	    xx = 1;
   	if (xx == 0)
  -	while ((c = *s++) != '\0') {
  +	while ((c = (int) *s++) != (int) '\0') {
   	    switch (c) {
   	    default:
   		continue;
  @@ -634,7 +634,7 @@
       } else {
   	unsigned char * pkt = (unsigned char *) data.ui8p;
   	unsigned int pktlen = 0;
  -	unsigned int v = *pkt;
  +	unsigned int v = (unsigned int) *pkt;
   	pgpTag tag = 0;
   	unsigned int plen;
   	unsigned int hlen = 0;
  @@ -642,11 +642,11 @@
   	if (v & 0x80) {
   	    if (v & 0x40) {
   		tag = (v & 0x3f);
  -		plen = pgpLen(pkt+1, &hlen);
  +		plen = pgpLen((byte *)pkt+1, &hlen);
   	    } else {
   		tag = (v >> 2) & 0xf;
   		plen = (1 << (v & 0x3));
  -		hlen = pgpGrab(pkt+1, plen);
  +		hlen = pgpGrab((byte *)pkt+1, plen);
   	    }
   	
   	    pktlen = 1 + plen + hlen;
  @@ -660,7 +660,7 @@
   	    size_t nb = 0;
   	    const char *tempstr;
   
  -	    (void) pgpPrtPkts(pkt, pktlen, dig, 0);
  +	    (void) pgpPrtPkts((byte *)pkt, pktlen, dig, 0);
   
   	    val = NULL;
   	again:
  @@ -1295,10 +1295,12 @@
       baseNames.ptr = headerFreeData(baseNames.ptr, bnt);
       dirNames.ptr = headerFreeData(dirNames.ptr, dnt);
   
  +/*@-onlytrans@*/
       if (fnp)
   	*fnp = fileNames.argv;
       else
   	fileNames.ptr = _free(fileNames.ptr);
  +/*@=onlytrans@*/
       if (fcp) *fcp = count;
   }
   
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/header.c
  ============================================================================
  $ cvs diff -u -r1.118 -r1.119 header.c
  --- rpm/rpmdb/header.c	14 Nov 2007 01:17:52 -0000	1.118
  +++ rpm/rpmdb/header.c	14 Nov 2007 23:56:33 -0000	1.119
  @@ -41,20 +41,26 @@
   
   /** \ingroup header
    */
  +/*@-type@*/
   /*@observer@*/ /*@unchecked@*/
   static unsigned char header_magic[8] = {
   	0x8e, 0xad, 0xe8, 0x01, 0x00, 0x00, 0x00, 0x00
   };
  +/*@=type@*/
   
  +/*@-type@*/
   /*@observer@*/ /*@unchecked@*/
   static unsigned char sigh_magic[8] = {
   	0x8e, 0xad, 0xe8, 0x3e, 0x00, 0x00, 0x00, 0x00
   };
  +/*@=type@*/
   
  +/*@-type@*/
   /*@observer@*/ /*@unchecked@*/
   static unsigned char meta_magic[8] = {
   	0x8e, 0xad, 0xe8, 0x3f, 0x00, 0x00, 0x00, 0x00
   };
  +/*@=type@*/
   
   /** \ingroup header
    * Size of header data types.
  @@ -447,15 +453,15 @@
   		int onDisk, /*@null@*/ rpmTagData * pend)
   	/*@*/
   {
  -    const unsigned char * s = (*p).ui8p;
  -    const unsigned char * se = (pend ? (*pend).ui8p : NULL);
  +    const unsigned char * s = (unsigned char *) (*p).ui8p;
  +    const unsigned char * se = (unsigned char *) (pend ? (*pend).ui8p : NULL);
       int length = 0;
   
       switch (type) {
       case RPM_STRING_TYPE:
   	if (count != 1)
   	    return -1;
  -	while (*s++) {
  +	while (*s++ != '\0') {
   	    if (se && s > se)
   		return -1;
   	    length++;
  @@ -469,7 +475,7 @@
   	if (onDisk) {
   	    while (count--) {
   		length++;       /* count nul terminator too */
  -               while (*s++) {
  +               while (*s++ != '\0') {
   		    if (se && s > se)
   			return -1;	/* XXX change errret, use size_t */
   		    length++;
  @@ -561,8 +567,10 @@
   	    return -1;
   
   	p.ptr = ie.data;
  -	pend.ui8p = (unsigned char *) dataEnd;
  +	pend.ui8p = (uint8_t *) dataEnd;
  +/*@-nullstate@*/	/* pend.ui8p derived from dataLength may be null */
   	ie.length = dataLength(ie.info.type, &p, ie.info.count, 1, &pend);
  +/*@=nullstate@*/
   	if (ie.length < 0 || hdrchkData(ie.length))
   	    return -1;
   
  @@ -570,7 +578,9 @@
   
   	if (entry) {
   	    ie.info.offset = regionid;
  +/*@-kepttrans@*/	/* entry->data is kept */
   	    *entry = ie;	/* structure assignment */
  +/*@=kepttrans@*/
   	    entry++;
   	}
   
  @@ -2247,8 +2257,10 @@
   
       if (!entry) {
   	p.argv = alloca(sizeof(*p.argv) * (langNum + 1));
  +/*@-observertrans -readonlytrans@*/
   	for (i = 0; i < langNum; i++)
   	    p.argv[i] = "";
  +/*@=observertrans =readonlytrans@*/
   	p.argv[langNum] = string;
   	return headerAddEntry(h, tag, RPM_I18NSTRING_TYPE, p.ptr, langNum + 1);
       } else if (langNum >= entry->info.count) {
  @@ -2263,7 +2275,7 @@
   	} else
   	    entry->data = xrealloc(entry->data, entry->length + length);
   
  -	memset(((char *)entry->data) + entry->length, '\0', ghosts);
  +	memset(((char *)entry->data) + entry->length, 0, ghosts);
   	memmove(((char *)entry->data) + entry->length + ghosts, string, strlen(string)+1);
   
   	entry->length += length;
  @@ -2592,9 +2604,9 @@
   typedef struct headerSprintfArgs_s {
       Header h;
       char * fmt;
  -/*@temp@*/
  +/*@observer@*/ /*@temp@*/
       headerTagTableEntry tags;
  -/*@temp@*/
  +/*@observer@*/ /*@temp@*/
       headerSprintfExtension exts;
   /*@observer@*/ /*@null@*/
       const char * errmsg;
  @@ -2738,7 +2750,7 @@
       t = name;
       *t++ = *s++;
       while (*s != '\0')
  -	*t++ = xtolower(*s++);
  +	*t++ = (char)xtolower((int)*s++);
       *t = '\0';
       if (typep)
   	*typep = tbl->type;
  @@ -2880,8 +2892,8 @@
   	    nb = 2 * c + 1;
   	    t = b = alloca(nb+1);
   	    while (c-- > 0) {
  -		unsigned int i;
  -		i = *s++;
  +		unsigned i;
  +		i = (unsigned) *s++;
   		*t++ = hex[ (i >> 4) & 0xf ];
   		*t++ = hex[ (i     ) & 0xf ];
   	    }
  @@ -3015,7 +3027,9 @@
       } else if (he->t == RPM_UINT64_TYPE) {
   	nb = 40;
   	val = xmalloc(40);
  +/*@-duplicatequals@*/
   	xx = snprintf(val, nb, "%llu", (unsigned long long)data.ui64p[0]);
  +/*@=duplicatequals@*/
   	val[nb-1] = '\0';
       } else if (he->t == RPM_STRING_TYPE) {
   	const char * s = data.str;
  @@ -3026,13 +3040,13 @@
   	/* XXX count no. of escapes instead. */
   	t = xmalloc(4 * nb + 3);
   	*t++ = '\'';
  -	while ((c = *s++) != 0) {
  -	    if (c == '\'') {
  +	while ((c = (int)*s++) != 0) {
  +	    if (c == (int)'\'') {
   		*t++ = '\'';
   		*t++ = '\\';
   		*t++ = '\'';
   	    }
  -	    *t++ = c;
  +	    *t++ = (char) c;
   	}
   	*t++ = '\'';
   	*t = '\0';
  @@ -3171,7 +3185,7 @@
   	    *chptr++ = '\0';
   
   	    while (start < chptr) {
  -		if (xisdigit(*start)) {
  +		if (xisdigit((int)*start)) {
   		    i = strtoul(start, &start, 10);
   		    token->u.tag.pad += i;
   		    start = chptr;
  @@ -3486,7 +3500,7 @@
   	if (xx) {
   	    (void) rpmheClean(he);
   	    he->t = RPM_STRING_TYPE;	
  -	    he->p.str = "(none)";
  +	    he->p.str = xstrdup("(none)");
   	    he->c = 1;
   	}
   	he->avail = 1;
  @@ -3558,17 +3572,21 @@
   	break;
       }
   
  +/*@-compmempass@*/	/* vhe->p.ui64p is stack, not owned */
       if (tag->fmt)
   	val = tag->fmt(vhe);
       else
   	val = intFormat(vhe, NULL);
  +/*@=compmempass@*/
   assert(val != NULL);
       if (val)
   	need = strlen(val) + 1;
   
   exit:
  +/*@-compmempass@*/	/* he->p.ptr is dependent, not owned @*/
       if (!_tagcache)
   	he = rpmheClean(he);
  +/*@=compmempass@*/
   
       if (val && need > 0) {
   	if (tag->format && *tag->format && tag->pad) {
  @@ -3635,8 +3653,10 @@
   
       case PTOK_TAG:
   	t = hsa->val + hsa->vallen;
  +/*@-modobserver@*/	/* headerCompoundFormats not modified. */
   	te = formatValue(hsa, &token->u.tag,
   			(token->u.tag.justOne ? 0 : element));
  +/*@=modobserver@*/
   	if (te == NULL)
   	    return NULL;
   	break;
  @@ -3657,7 +3677,9 @@
   
   	t = hsaReserve(hsa, need);
   	for (i = 0; i < condNumFormats; i++, spft++) {
  +/*@-modobserver@*/	/* headerCompoundFormats not modified. */
   	    te = singleSprintf(hsa, spft, element);
  +/*@=modobserver@*/
   	    if (te == NULL)
   		return NULL;
   	}
  @@ -3791,7 +3813,9 @@
   	    for (j = 0; j < numElements; j++) {
   		spft = token->u.array.format;
   		for (i = 0; i < token->u.array.numTokens; i++, spft++) {
  +/*@-modobserver@*/	/* headerCompoundFormats not modified. */
   		    te = singleSprintf(hsa, spft, j);
  +/*@=modobserver@*/
   		    if (te == NULL)
   			return NULL;
   		}
  @@ -3906,8 +3930,10 @@
       hsa->h = headerLink(h);
       hsa->fmt = xstrdup(fmt);
   /*@-castexpose@*/	/* FIX: legacy API shouldn't change. */
  +/*@-dependenttrans@*/
       hsa->exts = (headerSprintfExtension) exts;
       hsa->tags = (headerTagTableEntry) tags;
  +/*@=dependenttrans@*/
   /*@=castexpose@*/
       hsa->errmsg = NULL;
   
  @@ -3942,7 +3968,9 @@
   
       hsa = hsaInit(hsa);
       while ((nextfmt = hsaNext(hsa)) != NULL) {
  +/*@-modobserver@*/	/* headerCompoundFormats not modified. */
   	te = singleSprintf(hsa, nextfmt, 0);
  +/*@=modobserver@*/
   	if (te == NULL) {
   	    hsa->val = _free(hsa->val);
   	    break;
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/merge.c
  ============================================================================
  $ cvs diff -u -r1.9 -r1.10 merge.c
  --- rpm/rpmdb/merge.c	30 Sep 2007 17:29:05 -0000	1.9
  +++ rpm/rpmdb/merge.c	14 Nov 2007 23:56:33 -0000	1.10
  @@ -140,8 +140,8 @@
   		size_t n, size_t size, int (*cmp) (const void *, const void *))
   	/*@modifies list1, list2 @*/
   {
  -	int i, length, size2, tmp, sense;
  -	unsigned char *f1, *f2, *s, *l2, *last, *p2;
  +	int i, length, size2, sense;
  +	unsigned char *f1, *f2, *s, *l2, *last, *p2, tmp;
   
   	size2 = size*2;
   	if (n <= 5) {
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/pkgio.c
  ============================================================================
  $ cvs diff -u -r1.33 -r1.34 pkgio.c
  --- rpm/rpmdb/pkgio.c	14 Nov 2007 21:13:18 -0000	1.33
  +++ rpm/rpmdb/pkgio.c	14 Nov 2007 23:56:33 -0000	1.34
  @@ -5,8 +5,6 @@
   
   #include "system.h"
   
  -int _use_xar = 0;
  -
   #if defined(HAVE_MACHINE_TYPES_H)
   # include <machine/types.h>
   #endif
  @@ -47,6 +45,9 @@
   /*@access FD_t @*/              /* XXX stealing digests */
   
   /*@unchecked@*/
  +int _use_xar = 0;
  +
  +/*@unchecked@*/
   static int _print_pkts = 0;
   
   /*===============================================*/
  @@ -192,7 +193,7 @@
   
   	xx = 0;
   	if (fn && *fn != '%') {
  -	    xx = (pgpReadPkts(fn,&ts->pkpkt,&ts->pkpktlen) != PGPARMOR_PUBKEY);
  +	    xx = (pgpReadPkts(fn, (byte **)&ts->pkpkt, &ts->pkpktlen) != PGPARMOR_PUBKEY);
   	}
   	fn = _free(fn);
   	if (xx) {
  @@ -227,7 +228,7 @@
   	goto exit;
   
       /* Retrieve parameters from pubkey packet(s). */
  -    xx = pgpPrtPkts(ts->pkpkt, ts->pkpktlen, dig, 0);
  +    xx = pgpPrtPkts((byte *)ts->pkpkt, ts->pkpktlen, dig, 0);
   
       /* Do the parameters match the signature? */
       if (sigp->pubkey_algo == pubp->pubkey_algo
  @@ -328,10 +329,12 @@
   /*@unchecked@*/
   int _nolead = SUPPORT_RPMLEAD;
   
  +/*@-type@*/
   /*@unchecked@*/ /*@observer@*/
   static unsigned char lead_magic[] = {
       0xed, 0xab, 0xee, 0xdb, 0x00, 0x00, 0x00, 0x00
   };
  +/*@=type@*/
   
   /* The lead needs to be 8 byte aligned */
   
  @@ -351,8 +354,8 @@
       memcpy(&l, ptr, sizeof(l));
   
       /* Set some sane defaults */
  -    if (l.major == 0)
  -	l.major = 3;
  +    if ((int)l.major == 0)
  +	l.major = (unsigned char) 3;
       if (l.signature_type == 0)
   	l.signature_type = 5;		/* RPMSIGTYPE_HEADERSIG */
       if (msg && *msg)
  @@ -428,7 +431,7 @@
       switch (l->major) {
       default:
   	(void) snprintf(buf, sizeof(buf),
  -		_("lead version(%d): UNSUPPORTED"), l->major);
  +		_("lead version(%u): UNSUPPORTED"), (unsigned) l->major);
   	rc = RPMRC_NOTFOUND;
   	goto exit;
   	/*@notreached@*/ break;
  @@ -466,10 +469,12 @@
   extern int _newmagic;
   /*@=redecl@*/
   
  +/*@-type@*/
   /*@observer@*/ /*@unchecked@*/
   static unsigned char sigh_magic[8] = {
   	0x8e, 0xad, 0xe8, 0x3e, 0x00, 0x00, 0x00, 0x00
   };
  +/*@=type@*/
   
   /**
    * Write signature header.
  @@ -483,7 +488,8 @@
   	/*@modifies fd, ptr, fileSystem @*/
   {
       Header sigh = ptr;
  -    static unsigned char zero[8] = { 0, 0, 0, 0, 0, 0, 0, 0 };
  +    static unsigned char zero[8]
  +	= { '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0' };
       int sigSize, pad;
       rpmRC rc = RPMRC_OK;
       int xx;
  @@ -1365,9 +1371,9 @@
       rpmwf wf = fdGetWF(fd);
       if (wf != NULL) {
   	fdSetWF(fd, NULL);
  -/*@-modfilesys@*/
  +/*@-dependenttrans -modfilesys -observertrans @*/
   	wf = rpmwfFree(wf);
  -/*@=modfilesys@*/
  +/*@=dependenttrans =modfilesys =observertrans @*/
       }
       return RPMRC_OK;
   }
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/rpmdb.c
  ============================================================================
  $ cvs diff -u -r1.207 -r1.208 rpmdb.c
  --- rpm/rpmdb/rpmdb.c	14 Nov 2007 21:13:18 -0000	1.207
  +++ rpm/rpmdb/rpmdb.c	14 Nov 2007 23:56:33 -0000	1.208
  @@ -125,12 +125,12 @@
   	/*@*/
   {
       if (c >= '0' && c <= '9')
  -	return (c - '0');
  +	return (unsigned char)(c - '0');
       if (c >= 'A' && c <= 'F')
  -	return (c - 'A') + 10;
  +	return (unsigned char)((int)(c - 'A') + 10);
       if (c >= 'a' && c <= 'f')
  -	return (c - 'a') + 10;
  -    return 0;
  +	return (unsigned char)((int)(c - 'a') + 10);
  +    return '\0';
   }
   
   /**
  @@ -148,8 +148,8 @@
       char * t, * val;
       val = t = xmalloc(size * 2 + 1);
       while (size-- > 0) {
  -	unsigned int i;
  -	i = *s++;
  +	unsigned i;
  +	i = (unsigned) *s++;
   	*t++ = hex[ (i >> 4) & 0xf ];
   	*t++ = hex[ (i     ) & 0xf ];
       }
  @@ -223,12 +223,12 @@
       dbiTags[dbiTagsMax++] = RPMDBI_PACKAGES;
   
       for (o = dbiTagStr; o && *o; o = oe) {
  -	while (*o && xisspace(*o))
  +	while (*o && xisspace((int)*o))
   	    o++;
   	if (*o == '\0')
   	    break;
   	for (oe = o; oe && *oe; oe++) {
  -	    if (xisspace(*oe))
  +	    if (xisspace((int)*oe))
   		/*@innerbreak@*/ break;
   	    if (oe[0] == ':' && !(oe[1] == '/' && oe[2] == '/'))
   		/*@innerbreak@*/ break;
  @@ -1377,14 +1377,14 @@
    * @param s		(directory) path
    * @return		tagnum with (directory) path hash
    */
  -static inline unsigned taghash(const char *s)
  +static inline unsigned taghash(const unsigned char *s)
   	/*@*/
   {
       unsigned int r = 0;
       int c;
  -    while ((c = *(const unsigned char *)s++) != 0) {
  +    while ((c = (int) *s++) != 0) {
   	/* XXX Excluding the '/' character may cause hash collisions. */
  -	if (c != '/')
  +	if (c != (int) '/')
   	    r += (r << 3) + c;
       }
       return ((r & 0x7fff) | 0x8000) << 16;
  @@ -2004,7 +2004,7 @@
   
   	/* Find no. of bytes needed for pattern. */
   	/* periods and plusses are escaped, splats become '.*' */
  -	c = '\0';
  +	c = (int) '\0';
   	brackets = 0;
   	for (s = pattern; *s != '\0'; s++) {
   	    switch (*s) {
  @@ -2020,10 +2020,10 @@
   		brackets = 1;
   		/*@switchbreak@*/ break;
   	    case ']':
  -		if (c != '[') brackets = 0;
  +		if (c != (int) '[') brackets = 0;
   		/*@switchbreak@*/ break;
   	    }
  -	    c = *s;
  +	    c = (int) *s;
   	}
   
   	pat = t = xmalloc(nb);
  @@ -2031,7 +2031,7 @@
   	if (pattern[0] != '^') *t++ = '^';
   
   	/* Copy pattern, escaping periods, prefixing splats with period. */
  -	c = '\0';
  +	c = (int) '\0';
   	brackets = 0;
   	for (s = pattern; *s != '\0'; s++, t++) {
   	    switch (*s) {
  @@ -2049,10 +2049,11 @@
   		brackets = 1;
   		/*@switchbreak@*/ break;
   	    case ']':
  -		if (c != '[') brackets = 0;
  +		if (c != (int) '[') brackets = 0;
   		/*@switchbreak@*/ break;
   	    }
  -	    c = *t = *s;
  +	    *t = *s;
  +	    c = (int) *t;
   	}
   
   	if (s > pattern && s[-1] != '$') *t++ = '$';
  @@ -2209,12 +2210,14 @@
   		}
   		/*@switchbreak@*/ break;
   	    case RPM_UINT64_TYPE:
  +/*@-duplicatequals@*/
   		for (j = 0; j < (unsigned) he->c; j++) {
   		    sprintf(numbuf, "%llu", (unsigned long long)he->p.ui64p[j]);
   		    rc = mireRegexec(mire, numbuf);
   		    if ((!rc && !mire->notmatch) || (rc && mire->notmatch))
   			anymatch++;
   		}
  +/*@=duplicatequals@*/
   		/*@switchbreak@*/ break;
   	    case RPM_STRING_TYPE:
   		rc = mireRegexec(mire, he->p.str);
  @@ -2969,8 +2972,10 @@
   assert((dlen & 1) == 0);
   			dlen /= 2;
   			bin = t = xcalloc(1, dlen);
  +/*@-type@*/
   			for (j = 0; j < (unsigned) dlen; j++, t++, s += 2)
  -			    *t = (nibble(s[0]) << 4) | nibble(s[1]);
  +			    *t = (byte) (nibble(s[0]) << 4) | nibble(s[1]);
  +/*@=type@*/
   			key->data = bin;
   			key->size = (u_int32_t) dlen;
   			/*@switchbreak@*/ break;
  @@ -3460,8 +3465,10 @@
   assert((dlen & 1) == 0);
   			dlen /= 2;
   			bin = t = xcalloc(1, dlen);
  +/*@-type@*/
   			for (j = 0; j < (unsigned) dlen; j++, t++, s += 2)
  -			    *t = (nibble(s[0]) << 4) | nibble(s[1]);
  +			    *t = (byte) (nibble(s[0]) << 4) | nibble(s[1]);
  +/*@=type@*/
   			key->data = bin;
   			key->size = (u_int32_t) dlen;
   			/*@switchbreak@*/ break;
  @@ -3552,7 +3559,9 @@
   
   	    he->tag = 0;
   	    he->t = 0;
  +/*@-kepttrans -onlytrans@*/
   	    he->p.ptr = _free(he->p.ptr);
  +/*@=kepttrans =onlytrans@*/
   	    he->c = 0;
   	    bin = _free(bin);
   	    requireFlags.ptr = _free(requireFlags.ptr);
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/rpmwf.c
  ============================================================================
  $ cvs diff -u -r1.8 -r1.9 rpmwf.c
  --- rpm/rpmdb/rpmwf.c	14 Nov 2007 21:13:18 -0000	1.8
  +++ rpm/rpmdb/rpmwf.c	14 Nov 2007 23:56:33 -0000	1.9
  @@ -226,7 +226,9 @@
   	fn = wf->fn;
   assert(fn != NULL);
   
  +/*@-globs@*/
       wf->fd = Fopen(fn, fmode);
  +/*@=globs@*/
   if (_rpmwf_debug)
   fprintf(stderr, "*** Fopen(%s, %s) fd %p nb %u\n", fn, fmode, wf->fd, (unsigned)wf->nb);
       if (wf->fd == NULL || Ferror(wf->fd)) {
  @@ -299,10 +301,12 @@
       if (wf) {
   
   	if (wf->b == NULL) {
  +/*@-dependenttrans -onlytrans @*/	/* rpm needs dependent, xar needs only */
   	    wf->l = _free(wf->l);
   	    wf->s = _free(wf->s);
   	    wf->h = _free(wf->h);
   	    wf->p = _free(wf->p);
  +/*@=dependenttrans =onlytrans @*/
   	}
   
   	(void) rpmwfFiniXAR(wf);
  @@ -320,8 +324,10 @@
       rpmwf wf;
       int xx;
   
  +/*@-globs@*/
       if ((xx = Stat(fn, st)) < 0)
   	return NULL;
  +/*@=globs@*/
       wf = xcalloc(1, sizeof(*wf));
       wf->fn = xstrdup(fn);
       wf->nb = st->st_size;
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/rpmwf.h
  ============================================================================
  $ cvs diff -u -r1.3 -r1.4 rpmwf.h
  --- rpm/rpmdb/rpmwf.h	14 Nov 2007 01:17:52 -0000	1.3
  +++ rpm/rpmdb/rpmwf.h	14 Nov 2007 23:56:33 -0000	1.4
  @@ -11,19 +11,19 @@
       const char * fn;
   /*@relnull@*/
       FD_t fd;
  -/*@relnull@*/
  +/*@relnull@*/ /*@owned@*/
       void * b;
       size_t nb;
  -/*@relnull@*/
  +/*@relnull@*/ /*@dependent@*/
       char * l;
       size_t nl;
  -/*@relnull@*/
  +/*@relnull@*/ /*@dependent@*/
       char * s;
       size_t ns;
  -/*@relnull@*/
  +/*@relnull@*/ /*@dependent@*/
       char * h;
       size_t nh;
  -/*@relnull@*/
  +/*@relnull@*/ /*@dependent@*/
       char * p;
       size_t np;
   #ifdef WITH_XAR
  @@ -81,11 +81,11 @@
   
   rpmwf rdRPM(const char * rpmfn)
   	/*@globals fileSystem @*/
  -	/*@modifies wf, fileSystem @*/;
  +	/*@modifies fileSystem @*/;
   
   rpmwf rdXAR(const char * xarfn)
   	/*@globals fileSystem @*/
  -	/*@modifies wf, fileSystem @*/;
  +	/*@modifies fileSystem @*/;
   
   rpmRC wrXAR(const char * xarfn, rpmwf wf)
   	/*@globals fileSystem @*/
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/signature.c
  ============================================================================
  $ cvs diff -u -r1.21 -r1.22 signature.c
  --- rpm/rpmdb/signature.c	14 Nov 2007 21:13:18 -0000	1.21
  +++ rpm/rpmdb/signature.c	14 Nov 2007 23:56:33 -0000	1.22
  @@ -534,7 +534,6 @@
       byte * pkt;
       uint32_t pktlen;
       const char * fn = NULL;
  -    const char * SHA1 = NULL;
       int ret = -1;	/* assume failure. */
       int xx;
   
  @@ -547,6 +546,7 @@
   	goto exit;
   	/*@notreached@*/ break;
       case RPMSIGTAG_SHA1:
  +    {	const char * SHA1 = NULL;
   	fd = Fopen(file, "r.fdio");
   	if (fd == NULL || Ferror(fd))
   	    goto exit;
  @@ -585,11 +585,12 @@
   	he->signature = 1;
   	xx = hae(sigh, he, 0);
   	he->signature = 0;
  +	SHA1 = _free(SHA1);
   	if (!xx)
   	    goto exit;
   	ret = 0;
  -	break;
  -    case RPMSIGTAG_DSA:
  +   }	break;
  +   case RPMSIGTAG_DSA:
   	fd = Fopen(file, "r.fdio");
   	if (fd == NULL || Ferror(fd))
   	    goto exit;
  @@ -650,7 +651,6 @@
   	(void) Unlink(fn);
   	fn = _free(fn);
       }
  -    SHA1 = _free(SHA1);
       h = headerFree(h);
       if (fd != NULL) (void) Fclose(fd);
       return ret;
  @@ -1033,12 +1033,12 @@
   	/*@*/
   {
       if (c >= '0' && c <= '9')
  -	return (c - '0');
  +	return (unsigned char) (c - '0');
       if (c >= 'A' && c <= 'F')
  -	return (c - 'A') + 10;
  +	return (unsigned char)((int)(c - 'A') + 10);
       if (c >= 'a' && c <= 'f')
  -	return (c - 'a') + 10;
  -    return 0;
  +	return (unsigned char)((int)(c - 'a') + 10);
  +    return (unsigned char) '\0';
   }
   
   /**
  @@ -1174,8 +1174,10 @@
   
   	/* Compare leading 16 bits of digest for quick check. */
   	s = dig->md5;
  -	signhash16[0] = (nibble(s[0]) << 4) | nibble(s[1]);
  -	signhash16[1] = (nibble(s[2]) << 4) | nibble(s[3]);
  +/*@-type@*/
  +	signhash16[0] = (byte) (nibble(s[0]) << 4) | nibble(s[1]);
  +	signhash16[1] = (byte) (nibble(s[2]) << 4) | nibble(s[3]);
  +/*@=type@*/
   	if (memcmp(signhash16, sigp->signhash16, sizeof(signhash16))) {
   	    res = RPMRC_FAIL;
   	    goto exit;
  @@ -1190,7 +1192,7 @@
   
   assert(prefix != NULL);
   	hexstr = tt = xmalloc(2 * nb + 1);
  -	memset(tt, 'f', (2 * nb));
  +	memset(tt, (int) 'f', (2 * nb));
   	tt[0] = '0'; tt[1] = '0';
   	tt[2] = '0'; tt[3] = '1';
   	tt += (2 * nb) - strlen(prefix) - strlen(dig->md5) - 2;
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/sqlite.c
  ============================================================================
  $ cvs diff -u -r1.21 -r1.22 sqlite.c
  --- rpm/rpmdb/sqlite.c	11 Nov 2007 22:07:46 -0000	1.21
  +++ rpm/rpmdb/sqlite.c	14 Nov 2007 23:56:33 -0000	1.22
  @@ -533,14 +533,14 @@
   /*@i@*/ assert(key->size == sizeof(unsigned char));
   assert(swapped == 0); /* Byte swap?! */
   	    memcpy(&i, key->data, sizeof(i));
  -	    rc = sqlite3_bind_int(scp->pStmt, pos, i);
  +	    rc = sqlite3_bind_int(scp->pStmt, pos, (int) i);
   	} /*@innerbreak@*/ break;
   	case RPM_UINT16_TYPE:
   	{	unsigned short i;
   /*@i@*/ assert(key->size == sizeof(int_16));
   assert(swapped == 0); /* Byte swap?! */
   	    memcpy(&i, key->data, sizeof(i));
  -	    rc = sqlite3_bind_int(scp->pStmt, pos, i);
  +	    rc = sqlite3_bind_int(scp->pStmt, pos, (int) i);
   	} /*@innerbreak@*/ break;
   	case RPM_UINT64_TYPE:
   assert(0);	/* borken */
  @@ -773,7 +773,7 @@
   	if (rc)
   	    goto exit;
   
  -	sprintf(cmd, "INSERT INTO 'db_info' values('%d')", ((union _dbswap *)&endian)->uc[0]);
  +	sprintf(cmd, "INSERT INTO 'db_info' values('%u')", (unsigned)((union _dbswap *)&endian)->uc[0]);
   	rc = sqlite3_exec(sqldb->db, cmd, NULL, NULL, (char **)&scp->pzErrmsg);
   	if (rc)
   	    goto exit;
  @@ -1371,7 +1371,7 @@
   
       if (sql_rc == 0 && scp->nr > 0) {
   assert(scp->av != NULL);
  -	db_endian.uc[0] = strtol(scp->av[1], NULL, 10);
  +	db_endian.uc[0] = (unsigned char) strtol(scp->av[1], NULL, 10);
   
   	if ( db_endian.uc[0] == ((union _dbswap *)&endian)->uc[0] )
   	    rc = 0; /* Native endian */
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/tagname.c
  ============================================================================
  $ cvs diff -u -r1.11 -r1.12 tagname.c
  --- rpm/rpmdb/tagname.c	14 Nov 2007 21:13:18 -0000	1.11
  +++ rpm/rpmdb/tagname.c	14 Nov 2007 23:56:33 -0000	1.12
  @@ -167,7 +167,7 @@
   		if (t->name != NULL)
   		    strcpy(nameBuf, t->name + (sizeof("RPMTAG_")-1));
   		for (s = nameBuf+1; *s != '\0'; s++)
  -		    *s = xtolower(*s);
  +		    *s = (char) xtolower((int)*s);
   		/*@loopbreak@*/ break;
   	    }
   	}
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/rpmio.h
  ============================================================================
  $ cvs diff -u -r1.59 -r1.60 rpmio.h
  --- rpm/rpmio/rpmio.h	9 Nov 2007 18:00:07 -0000	1.59
  +++ rpm/rpmio/rpmio.h	14 Nov 2007 23:56:35 -0000	1.60
  @@ -812,37 +812,37 @@
   /*@}*/
   
   /*@unused@*/ static inline int xislower(int c) /*@*/ {
  -    return (c >= 'a' && c <= 'z');
  +    return (c >= (int)'a' && c <= (int)'z');
   }
   /*@unused@*/ static inline int xisupper(int c) /*@*/ {
  -    return (c >= 'A' && c <= 'Z');
  +    return (c >= (int)'A' && c <= (int)'Z');
   }
   /*@unused@*/ static inline int xisalpha(int c) /*@*/ {
       return (xislower(c) || xisupper(c));
   }
   /*@unused@*/ static inline int xisdigit(int c) /*@*/ {
  -    return (c >= '0' && c <= '9');
  +    return (c >= (int)'0' && c <= (int)'9');
   }
   /*@unused@*/ static inline int xisalnum(int c) /*@*/ {
       return (xisalpha(c) || xisdigit(c));
   }
   /*@unused@*/ static inline int xisblank(int c) /*@*/ {
  -    return (c == ' ' || c == '\t');
  +    return (c == (int)' ' || c == (int)'\t');
   }
   /*@unused@*/ static inline int xisspace(int c) /*@*/ {
  -    return (xisblank(c) || c == '\n' || c == '\r' || c == '\f' || c == '\v');
  +    return (xisblank(c) || c == (int)'\n' || c == (int)'\r' || c == (int)'\f' || c == (int)'\v');
   }
   /*@unused@*/ static inline int xiscntrl(int c) /*@*/ {
  -    return (c < ' ');
  +    return (c < (int)' ');
   }
   /*@unused@*/ static inline int xisascii(int c) /*@*/ {
       return ((c & 0x80) != 0x80);
   }
   /*@unused@*/ static inline int xisprint(int c) /*@*/ {
  -    return (c >= ' ' && xisascii(c));
  +    return (c >= (int)' ' && xisascii(c));
   }
   /*@unused@*/ static inline int xisgraph(int c) /*@*/ {
  -    return (c > ' ' && xisascii(c));
  +    return (c > (int)' ' && xisascii(c));
   }
   /*@unused@*/ static inline int xispunct(int c) /*@*/ {
       return (xisgraph(c) && !xisalnum(c));
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/rpmio_internal.h
  ============================================================================
  $ cvs diff -u -r2.85 -r2.86 rpmio_internal.h
  --- rpm/rpmio/rpmio_internal.h	11 Nov 2007 02:23:45 -0000	2.85
  +++ rpm/rpmio/rpmio_internal.h	14 Nov 2007 23:56:35 -0000	2.86
  @@ -185,6 +185,7 @@
       int		oflags;
       mode_t	omode;
   
  +/*@kept@*/
       void *	wf;		/* wrapper format descriptor */
   
       FDSTAT_t	stats;		/* I/O statistics */
  @@ -317,21 +318,25 @@
   /** \ingroup rpmio
    */
   /*@unused@*/ static inline
  -void fdSetWF(FD_t fd, void * wf)
  +void fdSetWF(FD_t fd, /*@kept@*/ void * wf)
   	/*@modifies fd @*/
   {
       FDSANE(fd);
  +    /*@-assignexpose@*/
       fd->wf = wf;
  +    /*@=assignexpose@*/
   }
   
   /** \ingroup rpmio
    */
   /*@unused@*/ static inline
  -/*@null@*/ /*@observer@*/ void * fdGetWF(FD_t fd)
  +/*@null@*/ /*@kept@*/ void * fdGetWF(FD_t fd)
   	/*@*/
   {
       FDSANE(fd);
  +    /*@-retexpose -usereleased @*/
       return fd->wf;
  +    /*@=retexpose =usereleased @*/
   }
   
   /** \ingroup rpmio
  @@ .
Received on Thu Nov 15 00:56:35 2007
Driven by Jeff Johnson and the RPM project team.
Hosted by OpenPKG and Ralf S. Engelschall.
Powered by FreeBSD and OpenPKG.