[Python-checkins] gh-105375: Improve error handling in _elementtree (#105591)

erlend-aasland webhook-mailer at python.org
Fri Jun 9 16:35:10 EDT 2023


https://github.com/python/cpython/commit/00b599ab5a76023fa0083d7cc5d3c569342a5191
commit: 00b599ab5a76023fa0083d7cc5d3c569342a5191
branch: main
author: Erlend E. Aasland <erlend.aasland at protonmail.com>
committer: erlend-aasland <erlend.aasland at protonmail.com>
date: 2023-06-09T22:35:03+02:00
summary:

gh-105375: Improve error handling in _elementtree (#105591)

Fix bugs where exceptions could end up being overwritten.

files:
A Misc/NEWS.d/next/Library/2023-06-09-21-25-14.gh-issue-105375.95g1eI.rst
M Modules/_elementtree.c

diff --git a/Misc/NEWS.d/next/Library/2023-06-09-21-25-14.gh-issue-105375.95g1eI.rst b/Misc/NEWS.d/next/Library/2023-06-09-21-25-14.gh-issue-105375.95g1eI.rst
new file mode 100644
index 000000000000..1894b2b94bb3
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2023-06-09-21-25-14.gh-issue-105375.95g1eI.rst
@@ -0,0 +1 @@
+Fix bugs in :mod:`!_elementtree` where exceptions could be overwritten.
diff --git a/Modules/_elementtree.c b/Modules/_elementtree.c
index 1e9c8bc46118..21a6e4e5b202 100644
--- a/Modules/_elementtree.c
+++ b/Modules/_elementtree.c
@@ -3259,10 +3259,14 @@ expat_start_handler(XMLParserObject* self, const XML_Char* tag_in,
         }
         while (attrib_in[0] && attrib_in[1]) {
             PyObject* key = makeuniversal(self, attrib_in[0]);
+            if (key == NULL) {
+                Py_DECREF(attrib);
+                Py_DECREF(tag);
+                return;
+            }
             PyObject* value = PyUnicode_DecodeUTF8(attrib_in[1], strlen(attrib_in[1]), "strict");
-            if (!key || !value) {
-                Py_XDECREF(value);
-                Py_XDECREF(key);
+            if (value == NULL) {
+                Py_DECREF(key);
                 Py_DECREF(attrib);
                 Py_DECREF(tag);
                 return;



More information about the Python-checkins mailing list