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