[Python-checkins] cpython (3.5): 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/7cb05201f93b
changeset: 99516:7cb05201f93b
branch: 3.5
parent: 99514:6633f29771db
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
@@ -2935,8 +2935,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 = PyUnicode_DecodeUTF8(attrib_in[1], strlen(attrib_in[1]), "strict");
@@ -2944,6 +2946,7 @@
 Py_XDECREF(value);
 Py_XDECREF(key);
 Py_DECREF(attrib);
+ Py_DECREF(tag);
 return;
 }
 ok = PyDict_SetItem(attrib, key, value);
@@ -2951,6 +2954,7 @@
 Py_DECREF(key);
 if (ok < 0) {
 Py_DECREF(attrib);
+ Py_DECREF(tag);
 return;
 }
 attrib_in += 2;
@@ -2958,8 +2962,10 @@
 } else {
 /* Pass an empty dictionary on */
 attrib = PyDict_New();
- if (!attrib)
+ if (!attrib) {
+ Py_DECREF(tag);
 return;
+ }
 }
 
 if (TreeBuilder_CheckExact(self->target)) {
-- 
Repository URL: https://hg.python.org/cpython


More information about the Python-checkins mailing list

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