]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
fix potential use of uninitialized char ** to construct a list if log_archive
authorGregory P. Smith <greg@mad-scientist.com>
Mon, 5 Jun 2006 00:40:31 +0000 (00:40 +0000)
committerGregory P. Smith <greg@mad-scientist.com>
Mon, 5 Jun 2006 00:40:31 +0000 (00:40 +0000)
is called with the (unsupported and unexported in this version) flag DB_ARCH_REMOVE.

also fix a log_list memory leak on error return in the event that python can't create
a new list object.

Modules/_bsddb.c

index e146b495003440ad7643de997ce7e717ca9b272b..3684bfdce3ce284f41df3a914e65d89683393b55 100644 (file)
@@ -4125,7 +4125,7 @@ DBEnv_log_archive(DBEnvObject* self, PyObject* args)
 {
     int flags=0;
     int err;
-    char **log_list_start, **log_list;
+    char **log_list = NULL;
     PyObject* list;
     PyObject* item = NULL;
 
@@ -4146,11 +4146,14 @@ DBEnv_log_archive(DBEnvObject* self, PyObject* args)
 
     list = PyList_New(0);
     if (list == NULL) {
+        if (log_list)
+            free(log_list);
         PyErr_SetString(PyExc_MemoryError, "PyList_New failed");
         return NULL;
     }
 
     if (log_list) {
+        char **log_list_start;
         for (log_list_start = log_list; *log_list != NULL; ++log_list) {
             item = PyString_FromString (*log_list);
             if (item == NULL) {