From cc28a7cb04f91f5270aa888ee4d75a69791ce2c7 Mon Sep 17 00:00:00 2001 From: Caolán McNamara Date: Wed, 13 Aug 2014 09:12:26 +0100 Subject: valgrind + bff: don't add 0xffff oldcode Invalid read of size 1 at 0x9DC6247: GIFLZWDecompressor::AddToTable(unsigned short, unsigned short) (decode.cxx:117) Change-Id: I9cea8dcd4a5eeaa1e793b9be96f82854b9d088af Reviewed-on: https://gerrit.libreoffice.org/10906 Reviewed-by: David Tardon Tested-by: David Tardon --- ...3e0068c9b19bb548826bed0599f65745-15940-minimized.gif | Bin 0 -> 47778 bytes vcl/source/filter/igif/decode.cxx | 11 +++++++---- 2 files changed, 7 insertions(+), 4 deletions(-) create mode 100644 vcl/qa/cppunit/graphicfilter/data/gif/pass/sf_3e0068c9b19bb548826bed0599f65745-15940-minimized.gif (limited to 'vcl') diff --git a/vcl/qa/cppunit/graphicfilter/data/gif/pass/sf_3e0068c9b19bb548826bed0599f65745-15940-minimized.gif b/vcl/qa/cppunit/graphicfilter/data/gif/pass/sf_3e0068c9b19bb548826bed0599f65745-15940-minimized.gif new file mode 100644 index 000000000000..47f5d4341ba6 Binary files /dev/null and b/vcl/qa/cppunit/graphicfilter/data/gif/pass/sf_3e0068c9b19bb548826bed0599f65745-15940-minimized.gif differ diff --git a/vcl/source/filter/igif/decode.cxx b/vcl/source/filter/igif/decode.cxx index bf29328e5109..5900b4cbe7a6 100644 --- a/vcl/source/filter/igif/decode.cxx +++ b/vcl/source/filter/igif/decode.cxx @@ -166,10 +166,13 @@ bool GIFLZWDecompressor::ProcessOneCode() } else if ( ( nCode > nEOICode ) && ( nCode <= nTableSize ) ) { - if ( nCode == nTableSize ) - AddToTable( nOldCode, nOldCode ); - else - AddToTable( nOldCode, nCode ); + if ( nOldCode != 0xffff ) + { + if ( nCode == nTableSize ) + AddToTable( nOldCode, nOldCode ); + else + AddToTable( nOldCode, nCode ); + } } else { -- cgit v1.2.3