diff options
author | Albert Astals Cid <aacid@kde.org> | 2019-05-23 00:54:29 +0200 |
---|---|---|
committer | Albert Astals Cid <aacid@kde.org> | 2019-05-23 00:57:01 +0200 |
commit | 89a5367d49b2556a2635dbb6d48d6a6b182a2c6c (patch) | |
tree | f146e9a7c628c8e4ac1c9e708f2a2948c9142164 /poppler/JPEG2000Stream.cc | |
parent | 65adf225eca287f63361cf49bd47388bff81af79 (diff) |
JPEG2000Stream: fail gracefully if not all components have the same WxH
I think this is just a mistake, or at least the only file we have with
this scenario is a fuzzed one
Diffstat (limited to 'poppler/JPEG2000Stream.cc')
-rw-r--r-- | poppler/JPEG2000Stream.cc | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/poppler/JPEG2000Stream.cc b/poppler/JPEG2000Stream.cc index 15bbcae4..0eea3a2d 100644 --- a/poppler/JPEG2000Stream.cc +++ b/poppler/JPEG2000Stream.cc @@ -4,7 +4,7 @@ // // A JPX stream decoder using OpenJPEG // -// Copyright 2008-2010, 2012, 2017, 2018 Albert Astals Cid <aacid@kde.org> +// Copyright 2008-2010, 2012, 2017-2019 Albert Astals Cid <aacid@kde.org> // Copyright 2011 Daniel Glöckner <daniel-gl@gmx.net> // Copyright 2014, 2016 Thomas Freitag <Thomas.Freitag@alfa.de> // Copyright 2013, 2014 Adrian Johnson <ajohnson@redneon.com> @@ -253,6 +253,12 @@ void JPXStream::init() close(); break; } + const int componentPixels = priv->image->comps[component].w * priv->image->comps[component].h; + if (componentPixels != priv->npixels) { + error(errSyntaxWarning, -1, "Component {0:d} has different WxH than component 0", component); + close(); + break; + } unsigned char *cdata = (unsigned char *)priv->image->comps[component].data; int adjust = 0; int depth = priv->image->comps[component].prec; |