- python: add exception to detect bad data in hdrUnload.
authorjbj <devnull@localhost>
Thu, 16 Aug 2001 18:49:07 +0000 (18:49 +0000)
committerjbj <devnull@localhost>
Thu, 16 Aug 2001 18:49:07 +0000 (18:49 +0000)
- change dir creation message from warning to debug for now.

CVS patchset: 5017
CVS date: 2001/08/16 18:49:07

CHANGES
lib/fsm.c
lib/header.c
python/rpmmodule.c
rpmdb/db3.c

diff --git a/CHANGES b/CHANGES
index 0ed40f8..6d8ad5a 100644 (file)
--- a/CHANGES
+++ b/CHANGES
        - always use dl size in regionSwab() return.
        - ppc: revert ppcmac to ppc.
        - ppc: autoconf test for va_copy.
+       - python: add exception to detect bad data in hdrUnload.
+       - change dir creation message from warning to debug for now.
 
 4.0 -> 4.0.[12]
        - add doxygen and lclint annotations most everywhere.
index fcf0f01..ae43481 100644 (file)
--- a/lib/fsm.c
+++ b/lib/fsm.c
@@ -1124,7 +1124,7 @@ static int fsmMkdirs(/*@special@*/ FSM_t fsm)
                st->st_mode = S_IFDIR | (fi->dperms & 07777);
                rc = fsmStage(fsm, FSM_MKDIR);
                if (!rc)
-                   rpmMessage(RPMMESS_WARNING,
+                   rpmMessage(RPMMESS_DEBUG,
                        _("%s directory created with perms %04o.\n"),
                        fsm->path, (unsigned)(st->st_mode & 07777));
                *te = '/';
index a378fd1..e7e7615 100644 (file)
@@ -770,7 +770,9 @@ Header headerLoad(void * uh)
     /*@-assignexpose@*/
     h->hv = *hdrVec;           /* structure assignment */
     /*@=assignexpose@*/
+    /*@-assignexpose -kepttrans@*/
     h->blob = uh;
+    /*@=assignexpose =kepttrans@*/
     h->indexAlloced = il + 1;
     h->indexUsed = il;
     h->index = xcalloc(h->indexAlloced, sizeof(*h->index));
index 04f6151..753591e 100644 (file)
@@ -160,25 +160,27 @@ static PyObject * hdrUnload(hdrObject * s, PyObject * args, PyObject *keywords)
     char * buf;
     PyObject * rc;
     int len, legacy = 0;
+    Header h;
     static char *kwlist[] = { "legacyHeader", NULL};
 
     if (!PyArg_ParseTupleAndKeywords(args, keywords, "|i", kwlist, &legacy))
        return NULL; 
 
+    h = headerLink(s->h);
     /* XXX this legacy switch is a hack, needs to be removed. */
     if (legacy) {
-       Header h;
+       h = headerCopy(s->h);   /* XXX strip region tags, etc */
+       headerFree(s->h);
+    }
+    len = headerSizeof(h, 0);
+    buf = headerUnload(h);
+    h = headerFree(h);
 
-       h = headerCopy(s->h);
-       len = headerSizeof(h, 0);
-       buf = headerUnload(h);
-/* XXX there's a missing headerFree(h); here */
-    } else {
-       len = headerSizeof(s->h, 0);
-       buf = headerUnload(s->h);
+    if (buf == NULL || len == 0) {
+       PyErr_SetString(pyrpmError, "can't unload bad header\n");
+       return NULL;
     }
 
-/* XXX there's a missing check on buf == NULL here. */
     rc = PyString_FromStringAndSize(buf, len);
     free(buf);
 
index 9f5e589..5abb9ff 100644 (file)
@@ -612,9 +612,9 @@ static int db3stat(dbiIndex dbi, unsigned int flags)
  * Turn off the message for now.
  */
 
-/*@-redecl -exportheadervar@*/
-extern int db_hash_nelem_debug;
-/*@=redecl =exportheadervar@*/
+/*@-redecl -exportheadervar -declundef@*/
+/*@unused@*/ extern int db_hash_nelem_debug;
+/*@=redecl =exportheadervar =declundef@*/
 
 static int db3close(/*@only@*/ dbiIndex dbi, /*@unused@*/ unsigned int flags)
        /*@modifies dbi, fileSystem @*/