[Python-checkins] r42895 - in python/branches/release24-maint: Modules/arraymodule.c Modules/cStringIO.c Modules/zipimport.c Objects/longobject.c Objects/stringobject.c Objects/unicodeobject.c Objects/weakrefobject.c Parser/firstsets.c Python/ceval.c Python/traceback.c
hyeshik.chang
python-checkins at python.org
Tue Mar 7 16:59:13 CET 2006
Author: hyeshik.chang
Date: Tue Mar 7 16:59:09 2006
New Revision: 42895
Modified:
python/branches/release24-maint/Modules/arraymodule.c
python/branches/release24-maint/Modules/cStringIO.c
python/branches/release24-maint/Modules/zipimport.c
python/branches/release24-maint/Objects/longobject.c
python/branches/release24-maint/Objects/stringobject.c
python/branches/release24-maint/Objects/unicodeobject.c
python/branches/release24-maint/Objects/weakrefobject.c
python/branches/release24-maint/Parser/firstsets.c
python/branches/release24-maint/Python/ceval.c
python/branches/release24-maint/Python/traceback.c
Log:
Backport r42894: SF #1444030 Fix several potential defects found
by Coverity.
Modified: python/branches/release24-maint/Modules/arraymodule.c
==============================================================================
--- python/branches/release24-maint/Modules/arraymodule.c (original)
+++ python/branches/release24-maint/Modules/arraymodule.c Tue Mar 7 16:59:09 2006
@@ -1826,10 +1826,13 @@
Py_DECREF(v);
}
} else if (initial != NULL && PyString_Check(initial)) {
- PyObject *t_initial = PyTuple_Pack(1,
- initial);
- PyObject *v =
- array_fromstring((arrayobject *)a,
+ PyObject *t_initial, *v;
+ t_initial = PyTuple_Pack(1, initial);
+ if (t_initial == NULL) {
+ Py_DECREF(a);
+ return NULL;
+ }
+ v = array_fromstring((arrayobject *)a,
t_initial);
Py_DECREF(t_initial);
if (v == NULL) {
Modified: python/branches/release24-maint/Modules/cStringIO.c
==============================================================================
--- python/branches/release24-maint/Modules/cStringIO.c (original)
+++ python/branches/release24-maint/Modules/cStringIO.c Tue Mar 7 16:59:09 2006
@@ -541,6 +541,7 @@
UNLESS (self->buf = (char *)malloc(size)) {
PyErr_SetString(PyExc_MemoryError,"out of memory");
self->buf_size = 0;
+ Py_DECREF(self);
return NULL;
}
Modified: python/branches/release24-maint/Modules/zipimport.c
==============================================================================
--- python/branches/release24-maint/Modules/zipimport.c (original)
+++ python/branches/release24-maint/Modules/zipimport.c Tue Mar 7 16:59:09 2006
@@ -1165,6 +1165,8 @@
mod = Py_InitModule4("zipimport", NULL, zipimport_doc,
NULL, PYTHON_API_VERSION);
+ if (mod == NULL)
+ return;
ZipImportError = PyErr_NewException("zipimport.ZipImportError",
PyExc_ImportError, NULL);
Modified: python/branches/release24-maint/Objects/longobject.c
==============================================================================
--- python/branches/release24-maint/Objects/longobject.c (original)
+++ python/branches/release24-maint/Objects/longobject.c Tue Mar 7 16:59:09 2006
@@ -2723,6 +2723,8 @@
if (a->ob_size < 0) {
a = (PyLongObject *) long_invert(a);
+ if (a == NULL)
+ return NULL;
maska = MASK;
}
else {
@@ -2731,6 +2733,10 @@
}
if (b->ob_size < 0) {
b = (PyLongObject *) long_invert(b);
+ if (b == NULL) {
+ Py_DECREF(a);
+ return NULL;
+ }
maskb = MASK;
}
else {
@@ -2782,7 +2788,7 @@
: (maskb ? size_a : MIN(size_a, size_b)))
: MAX(size_a, size_b);
z = _PyLong_New(size_z);
- if (a == NULL || b == NULL || z == NULL) {
+ if (z == NULL) {
Py_XDECREF(a);
Py_XDECREF(b);
Py_XDECREF(z);
Modified: python/branches/release24-maint/Objects/stringobject.c
==============================================================================
--- python/branches/release24-maint/Objects/stringobject.c (original)
+++ python/branches/release24-maint/Objects/stringobject.c Tue Mar 7 16:59:09 2006
@@ -3240,7 +3240,7 @@
return list;
onError:
- Py_DECREF(list);
+ Py_XDECREF(list);
return NULL;
}
Modified: python/branches/release24-maint/Objects/unicodeobject.c
==============================================================================
--- python/branches/release24-maint/Objects/unicodeobject.c (original)
+++ python/branches/release24-maint/Objects/unicodeobject.c Tue Mar 7 16:59:09 2006
@@ -1866,16 +1866,16 @@
message = "malformed \\N character escape";
if (ucnhash_CAPI == NULL) {
/* load the unicode data module */
- PyObject *m, *v;
+ PyObject *m, *api;
m = PyImport_ImportModule("unicodedata");
if (m == NULL)
goto ucnhashError;
- v = PyObject_GetAttrString(m, "ucnhash_CAPI");
+ api = PyObject_GetAttrString(m, "ucnhash_CAPI");
Py_DECREF(m);
- if (v == NULL)
+ if (api == NULL)
goto ucnhashError;
- ucnhash_CAPI = PyCObject_AsVoidPtr(v);
- Py_DECREF(v);
+ ucnhash_CAPI = PyCObject_AsVoidPtr(api);
+ Py_DECREF(api);
if (ucnhash_CAPI == NULL)
goto ucnhashError;
}
@@ -1935,6 +1935,7 @@
PyExc_UnicodeError,
"\\N escapes not supported (can't load unicodedata module)"
);
+ Py_XDECREF(v);
Py_XDECREF(errorHandler);
Py_XDECREF(exc);
return NULL;
@@ -3911,7 +3912,7 @@
return -1;
substr = PyUnicode_FromObject(substr);
if (substr == NULL) {
- Py_DECREF(substr);
+ Py_DECREF(str);
return -1;
}
@@ -4382,7 +4383,7 @@
return list;
onError:
- Py_DECREF(list);
+ Py_XDECREF(list);
Py_DECREF(string);
return NULL;
}
@@ -6627,6 +6628,10 @@
if (!str)
return NULL;
result = _PyUnicode_New(len);
+ if (!result) {
+ Py_DECREF(str);
+ return NULL;
+ }
for (i = 0; i < len; i++)
result->str[i] = buf[i];
result->str[len] = 0;
@@ -6813,7 +6818,7 @@
rescnt = fmtcnt + 100;
reslen += rescnt;
if (_PyUnicode_Resize(&result, reslen) < 0)
- return NULL;
+ goto onError;
res = PyUnicode_AS_UNICODE(result) + reslen - rescnt;
--rescnt;
}
@@ -7111,6 +7116,7 @@
rescnt = width + fmtcnt + 100;
reslen += rescnt;
if (reslen < 0) {
+ Py_XDECREF(temp);
Py_DECREF(result);
return PyErr_NoMemory();
}
Modified: python/branches/release24-maint/Objects/weakrefobject.c
==============================================================================
--- python/branches/release24-maint/Objects/weakrefobject.c (original)
+++ python/branches/release24-maint/Objects/weakrefobject.c Tue Mar 7 16:59:09 2006
@@ -903,9 +903,16 @@
}
}
else {
- PyObject *tuple = PyTuple_New(count * 2);
+ PyObject *tuple;
int i = 0;
+ tuple = PyTuple_New(count * 2);
+ if (tuple == NULL) {
+ if (restore_error)
+ PyErr_Fetch(&err_type, &err_value, &err_tb);
+ return;
+ }
+
for (i = 0; i < count; ++i) {
PyWeakReference *next = current->wr_next;
Modified: python/branches/release24-maint/Parser/firstsets.c
==============================================================================
--- python/branches/release24-maint/Parser/firstsets.c (original)
+++ python/branches/release24-maint/Parser/firstsets.c Tue Mar 7 16:59:09 2006
@@ -107,4 +107,6 @@
}
printf(" }\n");
}
+
+ PyMem_FREE(sym);
}
Modified: python/branches/release24-maint/Python/ceval.c
==============================================================================
--- python/branches/release24-maint/Python/ceval.c (original)
+++ python/branches/release24-maint/Python/ceval.c Tue Mar 7 16:59:09 2006
@@ -3407,8 +3407,11 @@
{
PyObject *result;
- if (arg == NULL)
+ if (arg == NULL) {
arg = PyTuple_New(0);
+ if (arg == NULL)
+ return NULL;
+ }
else if (!PyTuple_Check(arg)) {
PyErr_SetString(PyExc_TypeError,
"argument list must be a tuple");
Modified: python/branches/release24-maint/Python/traceback.c
==============================================================================
--- python/branches/release24-maint/Python/traceback.c (original)
+++ python/branches/release24-maint/Python/traceback.c Tue Mar 7 16:59:09 2006
@@ -184,8 +184,12 @@
}
PyOS_snprintf(linebuf, sizeof(linebuf), FMT, filename, lineno, name);
err = PyFile_WriteString(linebuf, f);
- if (xfp == NULL || err != 0)
+ if (xfp == NULL)
return err;
+ else if (err != 0) {
+ fclose(xfp);
+ return err;
+ }
for (i = 0; i < lineno; i++) {
char* pLastChar = &linebuf[sizeof(linebuf)-2];
do {
More information about the Python-checkins
mailing list