- lclint clean.

CVS patchset: 5715
CVS date: 2002/09/17 15:21:03
This commit is contained in:
jbj 2002-09-17 15:21:03 +00:00
parent c1542ea207
commit 0ef682d77e
15 changed files with 154 additions and 81 deletions

View File

@ -291,6 +291,7 @@
- fix: parse header data more carefully.
- fix: register SIGCHLD handler before forking (#73134).
- better diagnostics on failed header parsing.
- lclint clean.
4.0.3 -> 4.0.4:
- solaris: translate i86pc to i386 (#57182).

View File

@ -241,8 +241,8 @@ Header headerRegenSigHeader(const Header h, int noArchiveSize)
* @return 0 if new keyid, otherwise 1
*/
static int rpmtsStashKeyid(rpmts ts)
/*@globals nkeyids, keyids @*/
/*@modifies nkeyids, keyids @*/
/*@globals nextkeyid, nkeyids, keyids @*/
/*@modifies nextkeyid, nkeyids, keyids @*/
{
const void * sig = rpmtsSig(ts);
pgpDig dig = rpmtsDig(ts);
@ -270,7 +270,8 @@ static int rpmtsStashKeyid(rpmts ts)
keyids = xrealloc(keyids, nkeyids * sizeof(*keyids));
}
/*@-boundswrite@*/
keyids[nextkeyid] = keyid;
if (keyids) /* XXX can't happen */
keyids[nextkeyid] = keyid;
/*@=boundswrite@*/
nextkeyid++;
nextkeyid %= nkeyids_max;
@ -280,7 +281,9 @@ static int rpmtsStashKeyid(rpmts ts)
int headerVerifyInfo(int il, int dl, const void * pev, void * iv, int negate)
{
/*@-castexpose@*/
entryInfo pe = (entryInfo) pev;
/*@=castexpose@*/
entryInfo info = iv;
int i;
@ -349,11 +352,13 @@ rpmRC headerCheck(rpmts ts, const void * uh, size_t uc, const char ** msg)
int xx;
int i;
/*@-boundswrite@*/
buf[0] = '\0';
/*@=boundswrite@*/
/* Is the blob the right size? */
if (uc > 0 && pvlen != uc) {
snprintf(buf, sizeof(buf),
(void) snprintf(buf, sizeof(buf),
_("blob size(%d): BAD, 8 + 16 * il(%d) + dl(%d)\n"),
uc, il, dl);
goto exit;
@ -362,7 +367,7 @@ rpmRC headerCheck(rpmts ts, const void * uh, size_t uc, const char ** msg)
/* Check (and convert) the 1st tag element. */
xx = headerVerifyInfo(1, dl, pe, &entry->info, 0);
if (xx != -1) {
snprintf(buf, sizeof(buf),
(void) snprintf(buf, sizeof(buf),
_("tag[%d]: BAD, tag %d type %d offset %d count %d\n"),
0, entry->info.tag, entry->info.type,
entry->info.offset, entry->info.count);
@ -382,7 +387,7 @@ rpmRC headerCheck(rpmts ts, const void * uh, size_t uc, const char ** msg)
/* Is the offset within the data area? */
if (entry->info.offset >= dl) {
snprintf(buf, sizeof(buf),
(void) snprintf(buf, sizeof(buf),
_("region offset: BAD, tag %d type %d offset %d count %d\n"),
entry->info.tag, entry->info.type,
entry->info.offset, entry->info.count);
@ -391,19 +396,19 @@ rpmRC headerCheck(rpmts ts, const void * uh, size_t uc, const char ** msg)
/* Is there an immutable header region tag trailer? */
regionEnd = dataStart + entry->info.offset;
/*@-sizeoftype@*/
/*@-bounds@*/
(void) memcpy(info, regionEnd, REGION_TAG_COUNT);
/*@=bounds@*/
regionEnd += REGION_TAG_COUNT;
/*@-sizeoftype@*/
xx = headerVerifyInfo(1, dl, info, &entry->info, 1);
if (xx != -1 ||
!(entry->info.tag == RPMTAG_HEADERIMMUTABLE
&& entry->info.type == RPM_BIN_TYPE
&& entry->info.count == REGION_TAG_COUNT))
{
snprintf(buf, sizeof(buf),
(void) snprintf(buf, sizeof(buf),
_("region trailer: BAD, tag %d type %d offset %d count %d\n"),
entry->info.tag, entry->info.type,
entry->info.offset, entry->info.count);
@ -417,7 +422,7 @@ rpmRC headerCheck(rpmts ts, const void * uh, size_t uc, const char ** msg)
/* Is the no. of tags in the region less than the total no. of tags? */
ril = entry->info.offset/sizeof(*pe);
if ((entry->info.offset % sizeof(*pe)) || ril > il) {
snprintf(buf, sizeof(buf),
(void) snprintf(buf, sizeof(buf),
_("region size: BAD, ril(%d) > il(%d)\n"), ril, il);
goto exit;
}
@ -426,7 +431,7 @@ rpmRC headerCheck(rpmts ts, const void * uh, size_t uc, const char ** msg)
for (i = ril; i < il; i++) {
xx = headerVerifyInfo(1, dl, pe+i, &entry->info, 0);
if (xx != -1) {
snprintf(buf, sizeof(buf),
(void) snprintf(buf, sizeof(buf),
_("tag[%d]: BAD, tag %d type %d offset %d count %d\n"),
i, entry->info.tag, entry->info.type,
entry->info.offset, entry->info.count);
@ -446,7 +451,7 @@ rpmRC headerCheck(rpmts ts, const void * uh, size_t uc, const char ** msg)
}
if (entry->info.type != RPM_STRING_TYPE || *b != '\0' || blen != 40)
{
snprintf(buf, sizeof(buf), _("hdr SHA1: BAD, not hex\n"));
(void) snprintf(buf, sizeof(buf), _("hdr SHA1: BAD, not hex\n"));
goto exit;
}
/*@=boundsread@*/
@ -464,7 +469,7 @@ rpmRC headerCheck(rpmts ts, const void * uh, size_t uc, const char ** msg)
if (vsflags & RPMVSF_NODSAHEADER)
/*@switchbreak@*/ break;
if (entry->info.type != RPM_BIN_TYPE) {
snprintf(buf, sizeof(buf), _("hdr DSA: BAD, not binary\n"));
(void) snprintf(buf, sizeof(buf), _("hdr DSA: BAD, not binary\n"));
goto exit;
}
/*@-boundswrite@*/
@ -481,8 +486,10 @@ rpmRC headerCheck(rpmts ts, const void * uh, size_t uc, const char ** msg)
exit:
/* Return determined RPMRC_OK/RPMRC_FAIL conditions. */
if (rc != RPMRC_NOTFOUND) {
/*@-boundswrite@*/
buf[sizeof(buf)-1] = '\0';
if (msg) *msg = xstrdup(buf);
/*@=boundswrite@*/
return rc;
}
@ -491,17 +498,19 @@ exit:
verifyinfo_exit:
xx = headerVerifyInfo(ril-1, dl, pe+1, &entry->info, 0);
if (xx != -1) {
snprintf(buf, sizeof(buf),
(void) snprintf(buf, sizeof(buf),
_("tag[%d]: BAD, tag %d type %d offset %d count %d\n"),
xx+1, entry->info.tag, entry->info.type,
entry->info.offset, entry->info.count);
rc = RPMRC_FAIL;
} else {
snprintf(buf, sizeof(buf), "Header sanity check: OK\n");
(void) snprintf(buf, sizeof(buf), "Header sanity check: OK\n");
rc = RPMRC_OK;
}
/*@-boundswrite@*/
buf[sizeof(buf)-1] = '\0';
if (msg) *msg = xstrdup(buf);
/*@=boundswrite@*/
return rc;
}
@ -631,46 +640,57 @@ rpmRC rpmReadHeader(rpmts ts, FD_t fd, Header *hdrp, const char ** msg)
rpmRC rc = RPMRC_FAIL; /* assume failure */
int xx;
/*@-boundswrite@*/
buf[0] = '\0';
if (hdrp)
*hdrp = NULL;
if (msg)
*msg = NULL;
/*@=boundswrite@*/
memset(block, 0, sizeof(block));
if ((xx = timedRead(fd, (char *)block, sizeof(block))) != sizeof(block)) {
snprintf(buf, sizeof(buf),
(void) snprintf(buf, sizeof(buf),
_("hdr size(%d): BAD, read returned %d\n"), sizeof(block), xx);
goto exit;
}
if (memcmp(block, header_magic, sizeof(header_magic))) {
snprintf(buf, sizeof(buf), _("hdr magic: BAD\n"));
(void) snprintf(buf, sizeof(buf), _("hdr magic: BAD\n"));
goto exit;
}
/*@-boundsread@*/
il = ntohl(block[2]);
/*@=boundsread@*/
if (hdrchkTags(il)) {
snprintf(buf, sizeof(buf),
(void) snprintf(buf, sizeof(buf),
_("hdr tags: BAD, no. of tags(%d) out of range\n"), il);
goto exit;
}
/*@-boundsread@*/
dl = ntohl(block[3]);
/*@=boundsread@*/
if (hdrchkData(dl)) {
snprintf(buf, sizeof(buf),
(void) snprintf(buf, sizeof(buf),
_("hdr data: BAD, no. of bytes(%d) out of range\n"), dl);
goto exit;
}
/*@-sizeoftype@*/
nb = (il * sizeof(struct entryInfo_s)) + dl;
/*@=sizeoftype@*/
uc = sizeof(il) + sizeof(dl) + nb;
ei = xmalloc(uc);
/*@-bounds@*/
ei[0] = block[2];
ei[1] = block[3];
if ((xx = timedRead(fd, (char *)&ei[2], nb)) != nb) {
snprintf(buf, sizeof(buf),
(void) snprintf(buf, sizeof(buf),
_("hdr blob(%d): BAD, read returned %d\n"), nb, xx);
goto exit;
}
/*@=bounds@*/
/* Sanity check header tags */
rc = headerCheck(ts, ei, uc, msg);
@ -680,15 +700,17 @@ rpmRC rpmReadHeader(rpmts ts, FD_t fd, Header *hdrp, const char ** msg)
/* OK, blob looks sane, load the header. */
h = headerLoad(ei);
if (h == NULL) {
snprintf(buf, sizeof(buf), _("hdr load: BAD\n"));
(void) snprintf(buf, sizeof(buf), _("hdr load: BAD\n"));
goto exit;
}
h->flags |= HEADERFLAG_ALLOCATED;
ei = NULL; /* XXX will be freed with header */
exit:
if (rc == RPMRC_OK && hdrp && h)
/*@-boundswrite@*/
if (hdrp && h && rc == RPMRC_OK)
*hdrp = headerLink(h);
/*@=boundswrite@*/
ei = _free(ei);
h = headerFree(h);
@ -702,6 +724,7 @@ exit:
return rc;
}
/*@-bounds@*/ /* LCL: segfault */
int rpmReadPackageFile(rpmts ts, FD_t fd, const char * fn, Header * hdrp)
{
pgpDig dig;
@ -987,3 +1010,4 @@ exit:
sigh = rpmFreeSignature(sigh);
return rc;
}
/*@=bounds@*/

View File

@ -785,7 +785,7 @@ fprintf(stderr, " Disable: %p[0:%d:%d] active %d\n", psmtbl.psms, psmtbl.npsms
*/
static pid_t psmFork(rpmpsm psm)
/*@globals fileSystem, internalState @*/
/*@modifies psm, fileSystem, internalState @*/
/*@modifies fileSystem, internalState @*/
{
pid_t pid;
@ -804,8 +804,8 @@ fprintf(stderr, " Fork: %p[%d:%d:%d] = %p child %d\n", psmtbl.psms, 0, psmt
* @return fork(2) pid
*/
static pid_t psmRegisterFork(rpmpsm psm)
/*@globals psmtbl, fileSystem @*/
/*@modifies psm, psmtbl, fileSystem @*/
/*@globals psmtbl, fileSystem, internalState @*/
/*@modifies psm, psmtbl, fileSystem, internalState @*/
{
sigset_t newMask, oldMask;
int empty = -1;
@ -850,8 +850,8 @@ fprintf(stderr, " Register: %p[%d:%d:%d] = %p\n", psmtbl.psms, empty, psmtbl.np
* Unregister a child reaper.
*/
static int psmUnregister(rpmpsm psm, pid_t child)
/*@globals psmtbl, fileSystem @*/
/*@modifies psmtbl, fileSystem @*/
/*@globals psmtbl, fileSystem, internalState @*/
/*@modifies psmtbl, fileSystem, internalState @*/
{
sigset_t newMask, oldMask;
int i = 0;
@ -895,6 +895,8 @@ fprintf(stderr, "Unregister: %p[%d:%d:%d] = %p child %d\n", psmtbl.psms, i, psmt
* @return
*/
static inline pid_t psmGetReaped(rpmpsm psm)
/*@globals fileSystem @*/
/*@modifies fileSystem @*/
{
sigset_t newMask, oldMask;
pid_t reaped;
@ -992,6 +994,7 @@ static rpmRC runScript(rpmpsm psm, Header h, const char * sln,
FD_t out;
rpmRC rc = RPMRC_OK;
const char *n, *v, *r;
pid_t pid;
if (progArgv == NULL && script == NULL)
return rc;
@ -1113,7 +1116,9 @@ static rpmRC runScript(rpmpsm psm, Header h, const char * sln,
if (out == NULL) return RPMRC_FAIL; /* XXX can't happen */
/*@-branchstate@*/
if ((psm->child = psmRegisterFork(psm)) == 0) {
pid = psmRegisterFork(psm);
psm->child = pid;
if (psm->child == 0) {
const char * rootDir;
int pipes[2];

View File

@ -312,6 +312,7 @@ int showQueryPackage(QVA_t qva, /*@unused@*/ rpmts ts, Header h)
_("package has neither file owner or id lists\n"));
}
}
/*@-branchstate@*/
if (te > t) {
/*@-boundswrite@*/
*te++ = '\n';
@ -321,6 +322,7 @@ int showQueryPackage(QVA_t qva, /*@unused@*/ rpmts ts, Header h)
*t = '\0';
/*@=boundswrite@*/
}
/*@=branchstate@*/
}
rc = 0;

View File

@ -299,8 +299,8 @@ extern struct poptOption rpmVerifyPoptTable[];
* @return result of last non-zero showPackage() return
*/
int rpmcliShowMatches(QVA_t qva, rpmts ts)
/*@globals rpmGlobalMacroContext, fileSystem@*/
/*@modifies qva, rpmGlobalMacroContext, fileSystem @*/;
/*@globals rpmGlobalMacroContext, fileSystem, internalState @*/
/*@modifies qva, rpmGlobalMacroContext, fileSystem, internalState @*/;
/** \ingroup rpmcli
* Display list of tags that can be used in --queryformat.
@ -560,7 +560,8 @@ int rpmInstall(rpmts ts, struct rpmInstallArguments_s * ia,
int rpmErase(rpmts ts, const struct rpmInstallArguments_s * ia,
/*@null@*/ const char ** argv)
/*@globals rpmGlobalMacroContext, fileSystem, internalState @*/
/*@modifies ts, rpmGlobalMacroContext, fileSystem, internalState @*/;
/*@modifies ts, ia, rpmGlobalMacroContext,
fileSystem, internalState @*/;
/**
* A rollback transaction id element.

View File

@ -123,10 +123,10 @@ int headerNVR(Header h,
* Translate and merge legacy signature tags into header.
* @todo Remove headerSort() through headerInitIterator() modifies sig.
* @param h header
* @param sig signature header
* @param sigh signature header
*/
void headerMergeLegacySigs(Header h, const Header sig)
/*@modifies h, sig @*/;
void headerMergeLegacySigs(Header h, const Header sigh)
/*@modifies h, sigh @*/;
/** \ingroup header
* Regenerate signature header.
@ -853,10 +853,11 @@ int headerVerifyInfo(int il, int dl, const void * pev, void * iv, int negate)
* @param ts transaction set
* @param uh unloaded header blob
* @param uc no. of bytes in blob (or 0 to disable)
* @retval *msg verification error message
* @retval *msg verification error message (or NULL)
* @return RPMRC_OK on success
*/
rpmRC headerCheck(rpmts ts, const void * uh, size_t uc, const char ** msg)
rpmRC headerCheck(rpmts ts, const void * uh, size_t uc,
/*@out@*/ /*@null@*/ const char ** msg)
/*@globals rpmGlobalMacroContext, fileSystem, internalState @*/
/*@modifies ts, *msg, rpmGlobalMacroContext,
fileSystem, internalState @*/;
@ -866,12 +867,13 @@ rpmRC headerCheck(rpmts ts, const void * uh, size_t uc, const char ** msg)
* @param ts transaction set
* @param fd file handle
* @retval hdrp address of header (or NULL)
* @retval *msg verification error message
* @retval *msg verification error message (or NULL)
* @return RPMRC_OK on success
*/
rpmRC rpmReadHeader(rpmts ts, FD_t fd, Header *hdrp, const char ** msg)
rpmRC rpmReadHeader(rpmts ts, FD_t fd, /*@out@*/ Header *hdrp,
/*@out@*/ /*@null@*/ const char ** msg)
/*@globals rpmGlobalMacroContext, fileSystem, internalState @*/
/*@modifies ts, *msg, rpmGlobalMacroContext,
/*@modifies ts, *hdrp, *msg, rpmGlobalMacroContext,
fileSystem, internalState @*/;
/**

View File

@ -19,6 +19,8 @@
#include "debug.h"
/*@access Header@*/ /* XXX compared with NULL */
/*@access entryInfo @*/ /* XXX rpmReadSignature */
/*@access indexEntry @*/ /* XXX rpmReadSignature */
/*@access FD_t@*/ /* XXX compared with NULL */
/*@access DIGEST_CTX@*/ /* XXX compared with NULL */
/*@access pgpDig@*/
@ -163,45 +165,56 @@ rpmRC rpmReadSignature(FD_t fd, Header * sighp, sigType sig_type,
int xx;
int i;
/*@-boundswrite@*/
if (sighp)
*sighp = NULL;
buf[0] = '\0';
/*@=boundswrite@*/
if (sig_type != RPMSIGTYPE_HEADERSIG)
goto exit;
memset(block, 0, sizeof(block));
if ((xx = timedRead(fd, (char *)block, sizeof(block))) != sizeof(block)) {
snprintf(buf, sizeof(buf),
(void) snprintf(buf, sizeof(buf),
_("sigh size(%d): BAD, read returned %d\n"), sizeof(block), xx);
goto exit;
}
if (memcmp(block, header_magic, sizeof(header_magic))) {
snprintf(buf, sizeof(buf),
(void) snprintf(buf, sizeof(buf),
_("sigh magic: BAD\n"));
goto exit;
}
/*@-boundsread@*/
il = ntohl(block[2]);
/*@=boundsread@*/
if (il < 0 || il > 32) {
snprintf(buf, sizeof(buf),
(void) snprintf(buf, sizeof(buf),
_("sigh tags: BAD, no. of tags(%d) out of range\n"), il);
goto exit;
}
/*@-boundsread@*/
dl = ntohl(block[3]);
/*@=boundsread@*/
if (dl < 0 || dl > 8192) {
snprintf(buf, sizeof(buf),
(void) snprintf(buf, sizeof(buf),
_("sigh data: BAD, no. of bytes(%d) out of range\n"), dl);
goto exit;
}
/*@-sizeoftype@*/
nb = (il * sizeof(struct entryInfo_s)) + dl;
/*@=sizeoftype@*/
ei = xmalloc(sizeof(il) + sizeof(dl) + nb);
/*@-bounds@*/
ei[0] = block[2];
ei[1] = block[3];
pe = (entryInfo) &ei[2];
/*@=bounds@*/
dataStart = (unsigned char *) (pe + il);
if ((xx = timedRead(fd, (char *)pe, nb)) != nb) {
snprintf(buf, sizeof(buf),
(void) snprintf(buf, sizeof(buf),
_("sigh blob(%d): BAD, read returned %d\n"), nb, xx);
goto exit;
}
@ -209,7 +222,7 @@ rpmRC rpmReadSignature(FD_t fd, Header * sighp, sigType sig_type,
/* Check (and convert) the 1st tag element. */
xx = headerVerifyInfo(1, dl, pe, &entry->info, 0);
if (xx != -1) {
snprintf(buf, sizeof(buf),
(void) snprintf(buf, sizeof(buf),
_("tag[%d]: BAD, tag %d type %d offset %d count %d\n"),
0, entry->info.tag, entry->info.type,
entry->info.offset, entry->info.count);
@ -225,7 +238,7 @@ rpmRC rpmReadSignature(FD_t fd, Header * sighp, sigType sig_type,
/*@=sizeoftype@*/
if (entry->info.offset >= dl) {
snprintf(buf, sizeof(buf),
(void) snprintf(buf, sizeof(buf),
_("region offset: BAD, tag %d type %d offset %d count %d\n"),
entry->info.tag, entry->info.type,
entry->info.offset, entry->info.count);
@ -234,19 +247,19 @@ rpmRC rpmReadSignature(FD_t fd, Header * sighp, sigType sig_type,
/* Is there an immutable header region tag trailer? */
dataEnd = dataStart + entry->info.offset;
/*@-sizeoftype@*/
/*@-bounds@*/
(void) memcpy(info, dataEnd, REGION_TAG_COUNT);
/*@=bounds@*/
dataEnd += REGION_TAG_COUNT;
/*@-sizeoftype@*/
xx = headerVerifyInfo(1, dl, info, &entry->info, 1);
if (xx != -1 ||
!(entry->info.tag == RPMTAG_HEADERSIGNATURES
&& entry->info.type == RPM_BIN_TYPE
&& entry->info.count == REGION_TAG_COUNT))
{
snprintf(buf, sizeof(buf),
(void) snprintf(buf, sizeof(buf),
_("region trailer: BAD, tag %d type %d offset %d count %d\n"),
entry->info.tag, entry->info.type,
entry->info.offset, entry->info.count);
@ -260,18 +273,20 @@ rpmRC rpmReadSignature(FD_t fd, Header * sighp, sigType sig_type,
/* Is the no. of tags in the region less than the total no. of tags? */
ril = entry->info.offset/sizeof(*pe);
if ((entry->info.offset % sizeof(*pe)) || ril > il) {
snprintf(buf, sizeof(buf),
(void) snprintf(buf, sizeof(buf),
_("region size: BAD, ril(%d) > il(%d)\n"), ril, il);
goto exit;
}
}
/* Sanity check signature tags */
/*@-boundswrite@*/
memset(info, 0, sizeof(*info));
/*@=boundswrite@*/
for (i = 1; i < il; i++) {
xx = headerVerifyInfo(1, dl, pe+i, &entry->info, 0);
if (xx != -1) {
snprintf(buf, sizeof(buf),
(void) snprintf(buf, sizeof(buf),
_("sigh tag[%d]: BAD, tag %d type %d offset %d count %d\n"),
i, entry->info.tag, entry->info.type,
entry->info.offset, entry->info.count);
@ -282,7 +297,7 @@ rpmRC rpmReadSignature(FD_t fd, Header * sighp, sigType sig_type,
/* OK, blob looks sane, load the header. */
sigh = headerLoad(ei);
if (sigh == NULL) {
snprintf(buf, sizeof(buf), _("sigh load: BAD\n"));
(void) snprintf(buf, sizeof(buf), _("sigh load: BAD\n"));
goto exit;
}
sigh->flags |= HEADERFLAG_ALLOCATED;
@ -293,7 +308,7 @@ rpmRC rpmReadSignature(FD_t fd, Header * sighp, sigType sig_type,
/* Position at beginning of header. */
if (pad && (xx = timedRead(fd, (char *)block, pad)) != pad) {
snprintf(buf, sizeof(buf),
(void) snprintf(buf, sizeof(buf),
_("sigh pad(%d): BAD, read %d bytes\n"), pad, xx);
goto exit;
}
@ -304,11 +319,11 @@ rpmRC rpmReadSignature(FD_t fd, Header * sighp, sigType sig_type,
}
exit:
if (rc == RPMRC_OK && sighp && sigh)
/*@-boundswrite@*/
if (sighp && sigh && rc == RPMRC_OK)
*sighp = headerLink(sigh);
sigh = headerFree(sigh);
/*@-boundswrite@*/
if (msg != NULL) {
buf[sizeof(buf)-1] = '\0';
*msg = xstrdup(buf);

View File

@ -47,9 +47,9 @@ Header rpmNewSignature(void)
* @return rpmRC return code
*/
rpmRC rpmReadSignature(FD_t fd, /*@null@*/ /*@out@*/ Header *sighp,
sigType sig_type, const char ** msg)
sigType sig_type, /*@null@*/ /*@out@*/ const char ** msg)
/*@globals fileSystem @*/
/*@modifies fd, *sighp, fileSystem @*/;
/*@modifies fd, *sighp, *msg, fileSystem @*/;
/** \ingroup signature
* Write signature header.

View File

@ -75,8 +75,9 @@ extern "C" {
*/
int rpmdbFindFpList(/*@null@*/ rpmdb db, fingerPrint * fpList,
/*@out@*/ dbiIndexSet * matchList, int numItems)
/*@globals rpmGlobalMacroContext, fileSystem @*/
/*@modifies db, *matchList, rpmGlobalMacroContext, fileSystem @*/;
/*@globals rpmGlobalMacroContext, fileSystem, internalState @*/
/*@modifies db, *matchList, rpmGlobalMacroContext,
fileSystem, internalState @*/;
/* Be carefull with the memory... assert(*fullName == '/' || !scareMemory) */

View File

@ -397,11 +397,13 @@ static int dataLength(int_32 type, hPTR_t p, int_32 count, int onDisk,
case RPM_STRING_TYPE:
if (count != 1)
return -1;
/*@-boundsread@*/
while (*s++) {
if (se && s > se)
return -1;
length++;
}
/*@=boundsread@*/
length++; /* count nul terminator too. */
break;
@ -413,11 +415,13 @@ static int dataLength(int_32 type, hPTR_t p, int_32 count, int onDisk,
if (onDisk) {
while (count--) {
length++; /* count nul terminator too */
/*@-boundsread@*/
while (*s++) {
if (se && s > se)
return -1;
length++;
}
/*@=boundsread@*/
}
} else {
const char ** av = (const char **)p;
@ -500,8 +504,10 @@ static int regionSwab(/*@null@*/ indexEntry entry, int il, int dl,
return -1;
if (hdrchkData(ie.info.offset))
return -1;
/*@-boundsread@*/
if (hdrchkAlign(ie.info.type, ie.info.offset))
return -1;
/*@=boundsread@*/
ie.data = t = dataStart + ie.info.offset;
if (dataEnd && t >= dataEnd)
@ -1078,7 +1084,9 @@ Header headerLoad(/*@kept@*/ void * uh)
if (hdrchkData(off))
goto errxit;
if (off) {
/*@-sizeoftype@*/
size_t nb = REGION_TAG_COUNT;
/*@=sizeoftype@*/
int_32 * stei = memcpy(alloca(nb), dataStart + off, nb);
rdl = -ntohl(stei[2]); /* negative offset */
ril = rdl/sizeof(*pe);
@ -1834,10 +1842,12 @@ grabData(int_32 type, hPTR_t p, int_32 c, /*@out@*/ int * lengthPtr)
int length;
length = dataLength(type, p, c, 0, NULL);
/*@-branchstate@*/
if (length > 0) {
data = xmalloc(length);
copyData(type, data, p, c, length);
}
/*@=branchstate@*/
if (lengthPtr)
*lengthPtr = length;

View File

@ -37,8 +37,9 @@
* @return -1 on error, otherwise, an open file descriptor
*/
static int open_dso(const char * path, /*@null@*/ pid_t * pidp, /*@null@*/ size_t *fsizep)
/*@globals rpmGlobalMacroContext, internalState @*/
/*@modifies *pidp, *fsizep, rpmGlobalMacroContext, internalState @*/
/*@globals rpmGlobalMacroContext, fileSystem, internalState @*/
/*@modifies *pidp, *fsizep, rpmGlobalMacroContext,
fileSystem, internalState @*/
{
/*@only@*/
static const char * cmd = NULL;

View File

@ -769,8 +769,8 @@ static int blockSignals(/*@unused@*/ rpmdb db, /*@out@*/ sigset_t * oldMask)
*/
/*@mayexit@*/
static int unblockSignals(/*@unused@*/ rpmdb db, sigset_t * oldMask)
/*@globals rpmdbRock, fileSystem @*/
/*@modifies rpmdbRock, fileSystem @*/
/*@globals rpmdbRock, fileSystem, internalState @*/
/*@modifies rpmdbRock, fileSystem, internalState @*/
{
(void) rpmdbCheckSignals();
return sigprocmask(SIG_SETMASK, oldMask, NULL);
@ -1155,9 +1155,9 @@ int rpmdbVerify(const char * prefix)
*/
static int rpmdbFindByFile(rpmdb db, /*@null@*/ const char * filespec,
DBT * key, DBT * data, /*@out@*/ dbiIndexSet * matches)
/*@globals rpmGlobalMacroContext, fileSystem @*/
/*@globals rpmGlobalMacroContext, fileSystem, internalState @*/
/*@modifies db, *key, *data, *matches, rpmGlobalMacroContext,
fileSystem @*/
fileSystem, internalState @*/
/*@requires maxSet(matches) >= 0 @*/
{
HGE_t hge = (HGE_t)headerGetEntryMinMemory;
@ -1371,9 +1371,9 @@ static rpmRC dbiFindMatches(dbiIndex dbi, DBC * dbcursor,
/*@null@*/ const char * version,
/*@null@*/ const char * release,
/*@out@*/ dbiIndexSet * matches)
/*@globals rpmGlobalMacroContext, fileSystem @*/
/*@globals rpmGlobalMacroContext, fileSystem, internalState @*/
/*@modifies dbi, *dbcursor, *key, *data, *matches,
rpmGlobalMacroContext, fileSystem @*/
rpmGlobalMacroContext, fileSystem, internalState @*/
/*@requires maxSet(matches) >= 0 @*/
{
int gotMatches = 0;
@ -1467,9 +1467,9 @@ exit:
*/
static rpmRC dbiFindByLabel(dbiIndex dbi, DBC * dbcursor, DBT * key, DBT * data,
/*@null@*/ const char * arg, /*@out@*/ dbiIndexSet * matches)
/*@globals rpmGlobalMacroContext, fileSystem @*/
/*@globals rpmGlobalMacroContext, fileSystem, internalState @*/
/*@modifies dbi, *dbcursor, *key, *data, *matches,
rpmGlobalMacroContext, fileSystem @*/
rpmGlobalMacroContext, fileSystem, internalState @*/
/*@requires maxSet(matches) >= 0 @*/
{
const char * release;
@ -1604,8 +1604,8 @@ struct _rpmdbMatchIterator {
* @return 0 on success
*/
static int miFreeHeader(rpmdbMatchIterator mi, dbiIndex dbi)
/*@globals fileSystem @*/
/*@modifies mi, fileSystem @*/
/*@globals fileSystem, internalState @*/
/*@modifies mi, fileSystem, internalState @*/
{
int rc = 0;

View File

@ -1004,8 +1004,8 @@ int rpmdbSetHdrChk(/*@null@*/ rpmdbMatchIterator mi, /*@null@*/ rpmts ts,
/*@only@*/ /*@null@*/
rpmdbMatchIterator rpmdbInitIterator(/*@null@*/ rpmdb db, rpmTag rpmtag,
/*@null@*/ const void * keyp, size_t keylen)
/*@globals rpmGlobalMacroContext, fileSystem @*/
/*@modifies db, rpmGlobalMacroContext, fileSystem @*/;
/*@globals rpmGlobalMacroContext, fileSystem, internalState @*/
/*@modifies db, rpmGlobalMacroContext, fileSystem, internalState @*/;
/** \ingroup rpmdb
* Return next package header from iteration.
@ -1014,16 +1014,16 @@ rpmdbMatchIterator rpmdbInitIterator(/*@null@*/ rpmdb db, rpmTag rpmtag,
*/
/*@null@*/
Header rpmdbNextIterator(/*@null@*/ rpmdbMatchIterator mi)
/*@globals rpmGlobalMacroContext, fileSystem @*/
/*@modifies mi, rpmGlobalMacroContext, fileSystem @*/;
/*@globals rpmGlobalMacroContext, fileSystem, internalState @*/
/*@modifies mi, rpmGlobalMacroContext, fileSystem, internalState @*/;
/** \ingroup rpmdb
* Check rpmdb signal handler for trapped signal exit.
*/
/*@mayexit@*/
int rpmdbCheckSignals(void)
/*@globals fileSystem @*/
/*@modifies fileSystem @*/;
/*@globals fileSystem, internalState @*/
/*@modifies fileSystem, internalState @*/;
/** \ingroup rpmdb
* Destroy rpm database iterator.
@ -1032,8 +1032,8 @@ int rpmdbCheckSignals(void)
*/
/*@null@*/
rpmdbMatchIterator rpmdbFreeIterator(/*@only@*/ /*@null@*/rpmdbMatchIterator mi)
/*@globals rpmGlobalMacroContext, fileSystem @*/
/*@modifies mi, rpmGlobalMacroContext, fileSystem @*/;
/*@globals rpmGlobalMacroContext, fileSystem, internalState @*/
/*@modifies mi, rpmGlobalMacroContext, fileSystem, internalState @*/;
/** \ingroup rpmdb
* Add package header to rpm database and indices.
@ -1046,8 +1046,8 @@ rpmdbMatchIterator rpmdbFreeIterator(/*@only@*/ /*@null@*/rpmdbMatchIterator mi)
*/
int rpmdbAdd(/*@null@*/ rpmdb db, int iid, Header h, /*@null@*/ rpmts ts,
/*@null@*/ rpmRC (*hdrchk) (rpmts ts, const void *uh, size_t uc, const char ** msg))
/*@globals rpmGlobalMacroContext, fileSystem @*/
/*@modifies db, h, rpmGlobalMacroContext, fileSystem @*/;
/*@globals rpmGlobalMacroContext, fileSystem, internalState @*/
/*@modifies db, h, rpmGlobalMacroContext, fileSystem, internalState @*/;
/** \ingroup rpmdb
* Remove package header from rpm database and indices.
@ -1061,8 +1061,8 @@ int rpmdbAdd(/*@null@*/ rpmdb db, int iid, Header h, /*@null@*/ rpmts ts,
int rpmdbRemove(/*@null@*/ rpmdb db, /*@unused@*/ int rid, unsigned int hdrNum,
/*@null@*/ rpmts ts,
/*@null@*/ rpmRC (*hdrchk) (rpmts ts, const void *uh, size_t uc, const char ** msg))
/*@globals rpmGlobalMacroContext, fileSystem @*/
/*@modifies db, rpmGlobalMacroContext, fileSystem @*/;
/*@globals rpmGlobalMacroContext, fileSystem, internalState @*/
/*@modifies db, rpmGlobalMacroContext, fileSystem, internalState @*/;
/** \ingroup rpmdb
* Rebuild database indices from package headers.

View File

@ -50,6 +50,12 @@ typedef FILE * FD_t;
#include "debug.h"
#if defined(__LCLINT__)
/*@-exportheader@*/
extern const unsigned short int **__ctype_b_loc (void) /*@*/;
/*@=exportheader@*/
#endif
/*@access FD_t@*/ /* XXX compared with NULL */
/*@access MacroContext@*/
/*@access MacroEntry@*/

View File

@ -13,6 +13,7 @@
#include "ugid.h"
#include "debug.h"
/*@access DIR@*/
/*@access FD_t@*/
/*@access urlinfo@*/
@ -1174,7 +1175,9 @@ fprintf(stderr, "*** ftpOpendir(%s)\n", path);
/*@=abstract@*/
mydir->fd = ftpmagicdir;
/*@-usereleased@*/
mydir->data = (char *) dp;
/*@=usereleased@*/
mydir->allocation = nb;
mydir->size = ac;
mydir->offset = -1;
@ -1242,7 +1245,9 @@ fprintf(stderr, "*** ftpOpendir(%s)\n", path);
}
av[ac] = NULL;
/*@-kepttrans@*/
return (DIR *) mydir;
/*@=kepttrans@*/
}
/*@=boundswrite@*/