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

Fix bugs where exceptions could end up being overwritten.
This commit is contained in:
Erlend E. Aasland 2023-06-09 22:35:03 +02:00 committed by GitHub
parent f668f73bc8
commit 00b599ab5a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 3 deletions

View file

@ -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;