From 2cd253208d55e4374d0104b13bfa0ffeffbb1ce6 Mon Sep 17 00:00:00 2001 From: Ilya Fedin Date: Mon, 2 Jan 2023 07:56:27 +0400 Subject: [PATCH] Fix a possible leak when IsProgressiveJpeg gets invalid data --- ui/image/image_prepare.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/ui/image/image_prepare.cpp b/ui/image/image_prepare.cpp index cb37c53..3b7848e 100644 --- a/ui/image/image_prepare.cpp +++ b/ui/image/image_prepare.cpp @@ -1277,6 +1277,10 @@ bool IsProgressiveJpeg(const QByteArray &bytes) { } jpeg_create_decompress(&info); + const auto guard = gsl::finally([&] { + jpeg_destroy_decompress(&info); + }); + jpeg_mem_src( &info, reinterpret_cast(bytes.data()), @@ -1285,10 +1289,7 @@ bool IsProgressiveJpeg(const QByteArray &bytes) { return false; } - const auto result = (info.progressive_mode > 0); - jpeg_destroy_decompress(&info); - - return result; + return (info.progressive_mode > 0); } } // namespace Images