Skip to content

UAF in Element.findtext() when tag __eq__ mutates parent #148735

Description

@StanFromIreland

Crash report

What happened?

Similar to #126037.

fromxml.etree.ElementTreeimportElement, SubElementclassT(str):
def__eq__(self, other):
root.clear()
returnTrueroot=Element('a')
SubElement(root, T('a')).text=str(object())
repr(root.findtext('a'))

Under UBSan results in:

Objects/object.c:766:19: runtime error: member access within misaligned address 0xdddddddddddddddd for type 'struct PyTypeObject', which requires 8 byte alignment
0xdddddddddddddddd: note: pointer points here
<memory cannot be printed>
Segmentation fault (core dumped)

CPython versions tested on:

CPython main branch

Operating systems tested on:

No response

Output from running 'python -VV' on the command line:

No response

Linked PRs

Metadata

Metadata

Labels

extension-modulesC modules in the Modules dirtopic-XMLtype-crashA hard crash of the interpreter, possibly with a core dump

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions