[CVE-2022-40304] Fix dict corruption caused by entity reference cycles 81/287281/1 accepted/tizen/6.0/base/tool/20230131.025507 submit/tizen_6.0_base/20230126.073149 submit/tizen_6.0_base/20230126.073159
authorNick Wellnhofer <wellnhofer@aevum.de>
Wed, 31 Aug 2022 20:11:25 +0000 (22:11 +0200)
committerDongHun Kwak <dh0128.kwak@samsung.com>
Thu, 26 Jan 2023 06:54:54 +0000 (15:54 +0900)
commit63a9f680a00f402a5abcdec27e66ae9221ab5868
treef1211215660e5e6e30e82e04e8a890a844c0f92f
parent8d01b2bd27148d71947847053bf96546318bac76
[CVE-2022-40304] Fix dict corruption caused by entity reference cycles

When an entity reference cycle is detected, the entity content is
cleared by setting its first byte to zero. But the entity content might
be allocated from a dict. In this case, the dict entry becomes corrupted
leading to all kinds of logic errors, including memory errors like
double-frees.

Stop storing entity content, orig, ExternalID and SystemID in a dict.
These values are unlikely to occur multiple times in a document, so they
shouldn't have been stored in a dict in the first place.

Thanks to Ned Williamson and Nathan Wachholz working with Google Project
Zero for the report!

Change-Id: I885a9da0cce3dd3e8c62f5d9c309deb2ca5c1d85
Signed-off-by: DongHun Kwak <dh0128.kwak@samsung.com>
entities.c