qt5base-lts/tests/auto
Axel Spoerl c4301be7d5 QXmlStreamReader: Raise error on unexpected tokens
QXmlStreamReader accepted multiple DOCTYPE elements, containing DTD
fragments in the XML prolog, and in the XML body.
Well-formed but invalid XML files - with multiple DTD fragments in
prolog and body, combined with recursive entity expansions - have
caused infinite loops in QXmlStreamReader.

This patch implements a token check in QXmlStreamReader.
A stream is allowed to start with an XML prolog. StartDocument
and DOCTYPE elements are only allowed in this prolog, which
may also contain ProcessingInstruction and Comment elements.
As soon as anything else is seen, the prolog ends.
After that, the prolog-specific elements are treated as unexpected.
Furthermore, the prolog can contain at most one DOCTYPE element.

Update the documentation to reflect the new behavior.
Add an autotest that checks the new error cases are correctly detected,
and no error is raised for legitimate input.

The original OSS-Fuzz files (see bug reports) are not included in this
patch for file size reasons. They have been tested manually. Each of
them has more than one DOCTYPE element, causing infinite loops in
recursive entity expansions. The newly implemented functionality
detects those invalid DTD fragments. By raising an error, it aborts
stream reading before an infinite loop occurs.

Thanks to OSS-Fuzz for finding this.

Fixes: QTBUG-92113
Fixes: QTBUG-95188
Pick-to: 6.6 6.5 6.2 5.15
Change-Id: I0a082b9188b2eee50b396c4d5b1c9e1fd237bbdd
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2023-07-10 22:44:06 +02:00
..
bic/data Add binary compatibility file built against 6.5.0 2023-04-19 15:40:36 +00:00
cmake Fix handling of QT_PATH_ANDROID_ABI_xxxx in android multi-abi tests 2023-07-04 16:53:16 +02:00
concurrent CMake: Make qtbase tests standalone projects 2023-07-05 15:09:32 +02:00
corelib QXmlStreamReader: Raise error on unexpected tokens 2023-07-10 22:44:06 +02:00
dbus Fix spelling of D-Bus in the source code 2023-07-06 21:51:29 +02:00
gui CMake: Make gui tests standalone projects 2023-07-05 15:09:32 +02:00
guiapplauncher Move Weather Anchor Layout example to manual tests 2023-03-02 05:55:57 +01:00
network Update public suffix list 2023-07-06 17:53:11 +02:00
opengl tests: Remove remains of qmake conversion from CMakeLists.txt files 2023-02-17 21:56:49 +01:00
other a11y: Report app as parent for top-level item views 2023-07-10 11:34:41 +02:00
printsupport CMake: Make qtbase tests standalone projects 2023-07-05 15:09:32 +02:00
shared tests: remove PlatformInputContext::filterEvent() 2023-01-18 13:21:06 +01:00
sql SQL/SQLite: add case folding for non-ascii characters 2023-07-08 00:08:44 +02:00
testlib QCOMPARE: restore compatibility with braced-init-lists 2023-07-07 12:20:50 +02:00
tools qdbusxml2cpp: Improve error reporting 2023-07-06 21:51:25 +02:00
wasm CMake: Make qtbase tests standalone projects 2023-07-05 15:09:32 +02:00
widgets tst_QDateTimeEdit: skip parameters on EditorDateEdit declaration 2023-07-10 12:57:21 +02:00
xml CMake: Make qtbase tests standalone projects 2023-07-05 15:09:32 +02:00
CMakeLists.txt CI: Enable tests under corelib/text for Wasm platform 2023-07-10 14:53:34 +02:00
network-settings.h Use SPDX license identifiers 2022-05-16 16:37:38 +02:00