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, "<"); /*@switchbreak@*/ break;
case '>': te = stpcpy(te, ">"); /*@switchbreak@*/ break;
case '&': te = stpcpy(te, "&"); /*@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