From b82fc702bae9d6190bda1b4818a47cfa197df6d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= Date: Tue, 22 Dec 2020 10:31:35 +0000 Subject: [PATCH] oss-fuzz: psdfuzzer doesn't pass sanity check MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Step #5: #6 0x63cce7f in __cxa_throw (/tmp/not-out/psdfuzzer+0x63cce7f) Step #5: #7 0x4f1af9 in SvStream::ReadUInt32(unsigned int&) (/tmp/not-out/psdfuzzer+0x4f1af9) Step #5: #8 0x1d9dfd6 in (anonymous namespace)::PSDReader::ImplReadHeader() (/tmp/not-out/psdfuzzer+0x1d9dfd6) Step #5: #9 0x1d9d1a6 in (anonymous namespace)::PSDReader::ReadPSD(Graphic&) (/tmp/not-out/psdfuzzer+0x1d9d1a6) Step #5: #10 0x1d9cd38 in ipdGraphicImport (/tmp/not-out/psdfuzzer+0x1d9cd38) Change-Id: I407e7a32dd8e2fffb508edf896b9ca4783b94c97 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/108157 Tested-by: Caolán McNamara Reviewed-by: Caolán McNamara --- filter/source/graphicfilter/ipsd/ipsd.cxx | 15 ++++++++++++--- include/sal/log-areas.dox | 1 + 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/filter/source/graphicfilter/ipsd/ipsd.cxx b/filter/source/graphicfilter/ipsd/ipsd.cxx index 3c219870f1d2..528914a5cba1 100644 --- a/filter/source/graphicfilter/ipsd/ipsd.cxx +++ b/filter/source/graphicfilter/ipsd/ipsd.cxx @@ -325,7 +325,7 @@ namespace if (nIndex >= rvPalette.size()) { auto nSanitizedIndex = nIndex % rvPalette.size(); - SAL_WARN_IF(nIndex != nSanitizedIndex, "filter.tga", "invalid colormap index: " + SAL_WARN_IF(nIndex != nSanitizedIndex, "filter.psd", "invalid colormap index: " << static_cast(nIndex) << ", colormap len is: " << rvPalette.size()); nIndex = nSanitizedIndex; @@ -764,8 +764,17 @@ extern "C" SAL_DLLPUBLIC_EXPORT bool ipdGraphicImport( SvStream & rStream, Graphic & rGraphic, FilterConfigItem* ) { PSDReader aPSDReader(rStream); - - return aPSDReader.ReadPSD(rGraphic); + bool bRet; + try + { + bRet = aPSDReader.ReadPSD(rGraphic); + } + catch (const SvStreamEOFException&) + { + SAL_WARN("filter.psd", "EOF"); + bRet = false; + } + return bRet; } diff --git a/include/sal/log-areas.dox b/include/sal/log-areas.dox index 871e57319f6d..e6463117d1b8 100644 --- a/include/sal/log-areas.dox +++ b/include/sal/log-areas.dox @@ -231,6 +231,7 @@ certain functionality. @li @c filter.pcx @li @c filter.pdf @li @c filter.pict +@li @c filter.psd @li @c filter.ras @li @c filter.svg @li @c filter.tga