[Libreoffice-commits] core.git: vcl/source
Caolán McNamara
caolanm at redhat.com
Fri Nov 17 16:22:26 UTC 2017
vcl/source/gdi/pngread.cxx | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
New commits:
commit 1890b577d99d571e52570fa6b3e8b36b46a0bbba
Author: Caolán McNamara <caolanm at redhat.com>
Date: Mon Nov 6 09:55:42 2017 +0000
ofz#4076 bad palette READ
Change-Id: I54943d96baa6e2309bbf2cd3b6d8bcada2b76952
Reviewed-on: https://gerrit.libreoffice.org/44351
Reviewed-by: Caolán McNamara <caolanm at redhat.com>
Tested-by: Caolán McNamara <caolanm at redhat.com>
diff --git a/vcl/source/gdi/pngread.cxx b/vcl/source/gdi/pngread.cxx
index a29ed669d048..f2169e01d337 100644
--- a/vcl/source/gdi/pngread.cxx
+++ b/vcl/source/gdi/pngread.cxx
@@ -126,6 +126,7 @@ private:
bool mbGrayScale : 1;
bool mbzCodecInUse : 1;
bool mbStatus : 1;
+ bool mbIDATStarted : 1; // true if IDAT seen
bool mbIDATComplete : 1; // true if finished with enough IDAT chunks
bool mbpHYs : 1; // true if physical size of pixel available
bool mbIgnoreGammaChunk : 1;
@@ -205,6 +206,7 @@ PNGReaderImpl::PNGReaderImpl( SvStream& rPNGStream )
mbGrayScale( false ),
mbzCodecInUse ( false ),
mbStatus( true ),
+ mbIDATStarted( false ),
mbIDATComplete( false ),
mbpHYs ( false ),
mbIgnoreGammaChunk ( false ),
@@ -360,7 +362,7 @@ BitmapEx PNGReaderImpl::GetBitmapEx( const Size& rPreviewSizeHint )
case PNGCHUNK_PLTE :
{
- if ( !mbPalette )
+ if (!mbPalette && !mbIDATStarted)
mbStatus = ImplReadPalette();
}
break;
@@ -479,7 +481,7 @@ bool PNGReaderImpl::ImplReadHeader( const Size& rPreviewSizeHint )
}
mbPalette = true;
- mbIDATComplete = mbAlphaChannel = mbTransparent = false;
+ mbIDATStarted = mbIDATComplete = mbAlphaChannel = mbTransparent = false;
mbGrayScale = mbRGBTriple = false;
mnTargetDepth = mnPngDepth;
sal_uInt64 nScansize64 = ( ( static_cast< sal_uInt64 >( maOrigSize.Width() ) * mnPngDepth ) + 7 ) >> 3;
@@ -892,6 +894,8 @@ void PNGReaderImpl::ImplReadIDAT()
{
if( mnChunkLen > 0 )
{
+ mbIDATStarted = true;
+
if ( !mbzCodecInUse )
{
mbzCodecInUse = true;
More information about the Libreoffice-commits
mailing list