mirror of
https://github.com/libexpat/libexpat.git
synced 2025-04-05 05:05:00 +00:00
During processing attributes with entity references, appendAttributeValue can reach high recursion depths that can lead to a crash. This commit switches the processing to an iterative approach similar to the fix for internal entity processing. A new m_openAttributeEntities list is introduced to keep track of entity references that need processing. When a new entity reference is detected, instead of calling appendAttributeValue recursively, the entity will be added to open entities list and the execution will return to storeAttributeValue, where newly added entity will be handled. After the entity processing is done, appendAttributeValue will be called by using the next token. |
||
---|---|---|
.. | ||
.gitignore | ||
ascii.h | ||
asciitab.h | ||
expat.h | ||
expat_external.h | ||
iasciitab.h | ||
internal.h | ||
latin1tab.h | ||
libexpat.def.cmake | ||
Makefile.am | ||
nametab.h | ||
siphash.h | ||
utf8tab.h | ||
winconfig.h | ||
xmlparse.c | ||
xmlrole.c | ||
xmlrole.h | ||
xmltok.c | ||
xmltok.h | ||
xmltok_impl.c | ||
xmltok_impl.h | ||
xmltok_ns.c |