diff options
author | Georg Brandl <georg@python.org> | 2006-03-17 19:03:25 (GMT) |
---|---|---|
committer | Georg Brandl <georg@python.org> | 2006-03-17 19:03:25 (GMT) |
commit | 5c170fd4a9d2bc2e475d718cbbce526cad4a3eaa (patch) | |
tree | 26fd8d333d8b7fdde9e4b4bb2c39082d9a3d29d0 | |
parent | a5a0704942fcd422f817c9b34e77a2346ddcf102 (diff) | |
download | cpython-5c170fd4a9d2bc2e475d718cbbce526cad4a3eaa.zip cpython-5c170fd4a9d2bc2e475d718cbbce526cad4a3eaa.tar.gz cpython-5c170fd4a9d2bc2e475d718cbbce526cad4a3eaa.tar.bz2 |
Fix some missing checks after PyTuple_New, PyList_New, PyDict_New
-rw-r--r-- | Modules/almodule.c | 4 | ||||
-rw-r--r-- | Modules/gcmodule.c | 2 | ||||
-rw-r--r-- | Modules/ossaudiodev.c | 16 | ||||
-rw-r--r-- | Modules/pyexpat.c | 2 | ||||
-rw-r--r-- | Objects/tupleobject.c | 1 | ||||
-rw-r--r-- | Objects/typeobject.c | 5 | ||||
-rw-r--r-- | Python/compile.c | 4 |
7 files changed, 27 insertions, 7 deletions
diff --git a/Modules/almodule.c b/Modules/almodule.c index 5254fca..fbeb13a 100644 --- a/Modules/almodule.c +++ b/Modules/almodule.c @@ -1482,7 +1482,8 @@ al_GetParams(PyObject *self, PyObject *args) } if (alGetParams(resource, pvs, npvs) < 0) goto error; - v = PyList_New(npvs); + if (!(v = PyList_New(npvs))) + goto error; for (i = 0; i < npvs; i++) { if (pvs[i].sizeOut < 0) { char buf[32]; @@ -1692,6 +1693,7 @@ al_GetParamInfo(PyObject *self, PyObject *args) if (alGetParamInfo(res, param, &pinfo) < 0) return NULL; v = PyDict_New(); + if (!v) return NULL; item = PyInt_FromLong((long) pinfo.resource); PyDict_SetItemString(v, "resource", item); diff --git a/Modules/gcmodule.c b/Modules/gcmodule.c index 7e3f95a..3d49f6c 100644 --- a/Modules/gcmodule.c +++ b/Modules/gcmodule.c @@ -1085,6 +1085,8 @@ gc_get_referrers(PyObject *self, PyObject *args) { int i; PyObject *result = PyList_New(0); + if (!result) return NULL; + for (i = 0; i < NUM_GENERATIONS; i++) { if (!(gc_referrers_for(args, GEN_HEAD(i), result))) { Py_DECREF(result); diff --git a/Modules/ossaudiodev.c b/Modules/ossaudiodev.c index ce8a0d0..563620c 100644 --- a/Modules/ossaudiodev.c +++ b/Modules/ossaudiodev.c @@ -935,24 +935,32 @@ build_namelists (PyObject *module) labels = PyList_New(num_controls); names = PyList_New(num_controls); + if (labels == NULL || names == NULL) + goto error2; for (i = 0; i < num_controls; i++) { s = PyString_FromString(control_labels[i]); if (s == NULL) - return -1; + goto error2; PyList_SET_ITEM(labels, i, s); s = PyString_FromString(control_names[i]); if (s == NULL) - return -1; + goto error2; PyList_SET_ITEM(names, i, s); } if (PyModule_AddObject(module, "control_labels", labels) == -1) - return -1; + goto error2; if (PyModule_AddObject(module, "control_names", names) == -1) - return -1; + goto error1; return 0; + +error2: + Py_XDECREF(labels); +error1: + Py_XDECREF(names); + return -1; } diff --git a/Modules/pyexpat.c b/Modules/pyexpat.c index e4bf180..b6e927d 100644 --- a/Modules/pyexpat.c +++ b/Modules/pyexpat.c @@ -1519,6 +1519,8 @@ xmlparse_getattr(xmlparseobject *self, char *name) if (strcmp(name, "__members__") == 0) { int i; PyObject *rc = PyList_New(0); + if (!rc) + return NULL; for (i = 0; handler_info[i].name != NULL; i++) { PyObject *o = get_handler_name(&handler_info[i]); if (o != NULL) diff --git a/Objects/tupleobject.c b/Objects/tupleobject.c index 384b355..c16c71a 100644 --- a/Objects/tupleobject.c +++ b/Objects/tupleobject.c @@ -615,6 +615,7 @@ tuplesubscript(PyTupleObject* self, PyObject* item) } else { result = PyTuple_New(slicelength); + if (!result) return NULL; src = self->ob_item; dest = ((PyTupleObject *)result)->ob_item; diff --git a/Objects/typeobject.c b/Objects/typeobject.c index 65bf404..e45a480 100644 --- a/Objects/typeobject.c +++ b/Objects/typeobject.c @@ -1106,14 +1106,17 @@ set_mro_error(PyObject *to_merge, int *remain) char buf[1000]; PyObject *k, *v; PyObject *set = PyDict_New(); + if (!set) return; to_merge_size = PyList_GET_SIZE(to_merge); for (i = 0; i < to_merge_size; i++) { PyObject *L = PyList_GET_ITEM(to_merge, i); if (remain[i] < PyList_GET_SIZE(L)) { PyObject *c = PyList_GET_ITEM(L, remain[i]); - if (PyDict_SetItem(set, c, Py_None) < 0) + if (PyDict_SetItem(set, c, Py_None) < 0) { + Py_DECREF(set); return; + } } } n = PyDict_Size(set); diff --git a/Python/compile.c b/Python/compile.c index baf3989..1217c1e 100644 --- a/Python/compile.c +++ b/Python/compile.c @@ -319,7 +319,9 @@ static PyObject * list2dict(PyObject *list) { Py_ssize_t i, n; - PyObject *v, *k, *dict = PyDict_New(); + PyObject *v, *k; + PyObject *dict = PyDict_New(); + if (!dict) return NULL; n = PyList_Size(list); for (i = 0; i < n; i++) { |