summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobert Loehning <robert.loehning@qt.io>2020-08-20 18:48:37 +0200
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2020-08-24 13:50:59 +0000
commitba2477be62b03bb97af13e8c1d51ac6fb5010095 (patch)
tree982f85fc5c4b2d9460efc74bb5d0e0bafc1d87a2
parentbc83d241c0d7754cd636eef4db3cd359c35b4297 (diff)
Initialize QSvgHandler with QBuffer instead of QByteArray
Reduces memory consumption significantly for huge files. Fixes: oss-fuzz-24347 Change-Id: Iebf58d5f73030336d219ad770e1d1d2798c10067 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> (cherry picked from commit d71817248621651dc44d0ba67a74cd05d5f9619c) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r--src/svg/qsvgtinydocument.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/svg/qsvgtinydocument.cpp b/src/svg/qsvgtinydocument.cpp
index 12dd979..dd2c1ab 100644
--- a/src/svg/qsvgtinydocument.cpp
+++ b/src/svg/qsvgtinydocument.cpp
@@ -212,7 +212,10 @@ QSvgTinyDocument * QSvgTinyDocument::load(const QByteArray &contents)
}
#endif
- QSvgHandler handler(contents);
+ QBuffer buffer;
+ buffer.setData(contents);
+ buffer.open(QIODevice::ReadOnly);
+ QSvgHandler handler(&buffer);
QSvgTinyDocument *doc = nullptr;
if (handler.ok()) {