- lclint clean.
authorjbj <devnull@localhost>
Tue, 17 Sep 2002 15:21:03 +0000 (15:21 +0000)
committerjbj <devnull@localhost>
Tue, 17 Sep 2002 15:21:03 +0000 (15:21 +0000)
CVS patchset: 5715
CVS date: 2002/09/17 15:21:03

15 files changed:
CHANGES
lib/package.c
lib/psm.c
lib/query.c
lib/rpmcli.h
lib/rpmlib.h
lib/signature.c
lib/signature.h
rpmdb/fprint.h
rpmdb/header.c
rpmdb/legacy.c
rpmdb/rpmdb.c
rpmdb/rpmdb.h
rpmio/macro.c
rpmio/rpmrpc.c

diff --git a/CHANGES b/CHANGES
index 893b019..f25f49d 100644 (file)
--- a/CHANGES
+++ b/CHANGES
        - 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).
index 984981f..6b1c96e 100644 (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@*/
index 31bcfa8..1a8744b 100644 (file)
--- a/lib/psm.c
+++ b/lib/psm.c
@@ -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];
 
index 939b5c9..c13def9 100644 (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;
index b66ff41..47cd2b1 100644 (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.
index 72e2e42..89611ee 100644 (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 @*/;
 
 /**
index 93221da..f18f272 100644 (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);
index 69f8d2a..9c4ca20 100644 (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.
index 2b6bb9f..0012d4b 100644 (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) */
 
index d8c79c5..69017a5 100644 (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;
index b88cfbb..1aafd44 100644 (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;
index 6ccc290..1081100 100644 (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;
 
index a9175df..197a7b1 100644 (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.
index 1498f68..e155ef3 100644 (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@*/
index 80c10f9..2edaa01 100644 (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@*/