[Python-checkins] cpython (2.7): Fixed possible leaks in ElementTree parser.

serhiy.storchaka python-checkins at python.org
Wed Dec 9 12:49:34 EST 2015


https://hg.python.org/cpython/rev/002d8b981128
changeset: 99518:002d8b981128
branch: 2.7
parent: 99511:8459f530aaed
user: Serhiy Storchaka <storchaka at gmail.com>
date: Wed Dec 09 19:44:30 2015 +0200
summary:
 Fixed possible leaks in ElementTree parser.
files:
 Modules/_elementtree.c | 10 ++++++++--
 1 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/Modules/_elementtree.c b/Modules/_elementtree.c
--- a/Modules/_elementtree.c
+++ b/Modules/_elementtree.c
@@ -2227,8 +2227,10 @@
 /* attributes */
 if (attrib_in[0]) {
 attrib = PyDict_New();
- if (!attrib)
+ if (!attrib) {
+ Py_DECREF(tag);
 return;
+ }
 while (attrib_in[0] && attrib_in[1]) {
 PyObject* key = makeuniversal(self, attrib_in[0]);
 PyObject* value = makestring(attrib_in[1], strlen(attrib_in[1]));
@@ -2236,6 +2238,7 @@
 Py_XDECREF(value);
 Py_XDECREF(key);
 Py_DECREF(attrib);
+ Py_DECREF(tag);
 return;
 }
 ok = PyDict_SetItem(attrib, key, value);
@@ -2243,6 +2246,7 @@
 Py_DECREF(key);
 if (ok < 0) {
 Py_DECREF(attrib);
+ Py_DECREF(tag);
 return;
 }
 attrib_in += 2;
@@ -2260,8 +2264,10 @@
 if (attrib == Py_None) {
 Py_DECREF(attrib);
 attrib = PyDict_New();
- if (!attrib)
+ if (!attrib) {
+ Py_DECREF(tag);
 return;
+ }
 }
 res = PyObject_CallFunction(self->handle_start, "OO", tag, attrib);
 } else
-- 
Repository URL: https://hg.python.org/cpython


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /