From d71817248621651dc44d0ba67a74cd05d5f9619c Mon Sep 17 00:00:00 2001 From: Robert Loehning Date: Thu, 20 Aug 2020 18:48:37 +0200 Subject: 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 --- src/svg/qsvgtinydocument.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) 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()) { -- cgit v1.2.1