mirror of
https://github.com/AdaCore/cpython.git
synced 2026-02-12 12:57:15 -08:00
fix potential use of uninitialized char ** to construct a list if log_archive
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.
This commit is contained in:
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user