diff options
author | Robert Loehning <robert.loehning@qt.io> | 2020-08-20 18:48:37 +0200 |
---|---|---|
committer | Robert Loehning <robert.loehning@qt.io> | 2020-08-24 13:38:59 +0000 |
commit | d71817248621651dc44d0ba67a74cd05d5f9619c (patch) | |
tree | 6be754adbb08ebb8267ea0ba31f213a1b73e2722 | |
parent | a5748859061182b7c18fe74f11afd4a57a398687 (diff) | |
download | qtsvg-d71817248621651dc44d0ba67a74cd05d5f9619c.tar.gz |
Initialize QSvgHandler with QBuffer instead of QByteArray
Reduces memory consumption significantly for huge files.
Fixes: oss-fuzz-24347
Pick-to: 5.15
Change-Id: Iebf58d5f73030336d219ad770e1d1d2798c10067
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
-rw-r--r-- | src/svg/qsvgtinydocument.cpp | 5 |
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()) { |