summaryrefslogtreecommitdiff
path: root/filter
diff options
context:
space:
mode:
authorStephan Bergmann <sbergman@redhat.com>2018-11-12 21:18:16 +0100
committerStephan Bergmann <sbergman@redhat.com>2018-11-13 07:26:57 +0100
commitf4f3e7919de9d632881e3bca5eba9499450bfaf4 (patch)
tree888613143521acffd9c237647d8ddc0d29a25339 /filter
parentd30d050c2febe7043d0f70f954ee06e28c4115d9 (diff)
Silence -fsanitize=implicit-signed-integer-truncation
...as happens during CppunitTest_sw_ooxmlimport2: > filter/source/graphicfilter/itiff/itiff.cxx:866:29: runtime error: implicit conversion from type 'int' of value 498 (32-bit, signed) to type 'sal_uInt8' (aka 'unsigned char') changed the value to 242 (8-bit, unsigned) > #0 in TIFFReader::ConvertScanline(int) at filter/source/graphicfilter/itiff/itiff.cxx:866:29 (instdir/program/libgielo.so +0x294419) > #1 in TIFFReader::ReadMap() at filter/source/graphicfilter/itiff/itiff.cxx:695:19 (instdir/program/libgielo.so +0x292291) > #2 in TIFFReader::ReadTIFF(SvStream&, Graphic&) at filter/source/graphicfilter/itiff/itiff.cxx:1597:32 (instdir/program/libgielo.so +0x2ac5c5) > #3 in itiGraphicImport at filter/source/graphicfilter/itiff/itiff.cxx:1673:28 (instdir/program/libgielo.so +0x2af1ed) > #4 in GraphicFilter::ImportGraphic(Graphic&, rtl::OUString const&, SvStream&, unsigned short, unsigned short*, GraphicFilterImportFlags, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue>*, WmfExternal const*) at vcl/source/filter/graphicfilter.cxx:2031:22 (instdir/program/libvcllo.so +0x684e246) > #5 in GraphicFilter::ImportGraphic(Graphic&, rtl::OUString const&, SvStream&, unsigned short, unsigned short*, GraphicFilterImportFlags, WmfExternal const*) at vcl/source/filter/graphicfilter.cxx:1281:12 (instdir/program/libvcllo.so +0x6845817) > #6 in (anonymous namespace)::GraphicProvider::queryGraphic(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) at vcl/source/graphic/UnoGraphicProvider.cxx:418:33 (instdir/program/libvcllo.so +0x623ca3a) > #7 in non-virtual thunk to (anonymous namespace)::GraphicProvider::queryGraphic(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) at vcl/source/graphic/UnoGraphicProvider.cxx (instdir/program/libvcllo.so +0x62407e2) > #8 in oox::GraphicHelper::importGraphic(com::sun::star::uno::Reference<com::sun::star::io::XInputStream> const&, WmfExternal const*) const at oox/source/helper/graphichelper.cxx:263:39 (instdir/program/libooxlo.so +0x2b33a1f) > #9 in oox::GraphicHelper::importEmbeddedGraphic(rtl::OUString const&, WmfExternal const*) const at oox/source/helper/graphichelper.cxx:351:24 (instdir/program/libooxlo.so +0x2b370da) > #10 in oox::drawingml::BlipContext::BlipContext(oox::core::ContextHandler2Helper const&, oox::AttributeList const&, oox::drawingml::BlipFillProperties&) at oox/source/drawingml/misccontexts.cxx:154:72 (instdir/program/libooxlo.so +0x23c35e0) > #11 in oox::drawingml::BlipFillContext::onCreateContext(int, oox::AttributeList const&) at oox/source/drawingml/misccontexts.cxx:237:24 (instdir/program/libooxlo.so +0x23c6da4) > #12 in non-virtual thunk to oox::drawingml::BlipFillContext::onCreateContext(int, oox::AttributeList const&) at oox/source/drawingml/misccontexts.cxx (instdir/program/libooxlo.so +0x23c8638) > #13 in oox::core::ContextHandler2Helper::implCreateChildContext(int, com::sun::star::uno::Reference<com::sun::star::xml::sax::XFastAttributeList> const&) at oox/source/core/contexthandler2.cxx:94:34 (instdir/program/libooxlo.so +0x1b877e4) > #14 in oox::core::ContextHandler2::createFastChildContext(int, com::sun::star::uno::Reference<com::sun::star::xml::sax::XFastAttributeList> const&) at oox/source/core/contexthandler2.cxx:191:12 (instdir/program/libooxlo.so +0x1b8a37c) > #15 in non-virtual thunk to oox::core::ContextHandler2::createFastChildContext(int, com::sun::star::uno::Reference<com::sun::star::xml::sax::XFastAttributeList> const&) at oox/source/core/contexthandler2.cxx (instdir/program/libooxlo.so +0x1b8a3c8) > #16 in writerfilter::ooxml::OOXMLFastContextHandlerWrapper::lcl_createFastChildContext(int, com::sun::star::uno::Reference<com::sun::star::xml::sax::XFastAttributeList> const&) at writerfilter/source/ooxml/OOXMLFastContextHandler.cxx:1908:31 (instdir/program/libwriterfilterlo.so +0x1ade3d6) > #17 in writerfilter::ooxml::OOXMLFastContextHandler::createFastChildContext(int, com::sun::star::uno::Reference<com::sun::star::xml::sax::XFastAttributeList> const&) at writerfilter/source/ooxml/OOXMLFastContextHandler.cxx:208:21 (instdir/program/libwriterfilterlo.so +0x1aa7c37) > #18 in non-virtual thunk to writerfilter::ooxml::OOXMLFastContextHandler::createFastChildContext(int, com::sun::star::uno::Reference<com::sun::star::xml::sax::XFastAttributeList> const&) at writerfilter/source/ooxml/OOXMLFastContextHandler.cxx (instdir/program/libwriterfilterlo.so +0x1aa7ed8) > #19 in (anonymous namespace)::Entity::startElement((anonymous namespace)::Event const*) at sax/source/fastparser/fastparser.cxx:439:44 (instdir/program/libexpwraplo.so +0x24df0c) > #20 in sax_fastparser::FastSaxParserImpl::callbackStartElement(unsigned char const*, unsigned char const*, unsigned char const*, int, unsigned char const**, int, unsigned char const**) at sax/source/fastparser/fastparser.cxx:1254:21 (instdir/program/libexpwraplo.so +0x24943f) > #21 in (anonymous namespace)::call_callbackStartElement(void*, unsigned char const*, unsigned char const*, unsigned char const*, int, unsigned char const**, int, int, unsigned char const**) at sax/source/fastparser/fastparser.cxx:310:18 (instdir/program/libexpwraplo.so +0x240f8e) > #22 in xmlParseStartTag2 at workdir/UnpackedTarball/libxml2/parser.c:9583:6 (instdir/program/libxml2.so.2 +0x6f8f90) > #23 in xmlParseTryOrFinish at workdir/UnpackedTarball/libxml2/parser.c:11342:14 (instdir/program/libxml2.so.2 +0x73005c) > #24 in xmlParseChunk__internal_alias at workdir/UnpackedTarball/libxml2/parser.c:12244:13 (instdir/program/libxml2.so.2 +0x7241ea) > #25 in sax_fastparser::FastSaxParserImpl::parse() at sax/source/fastparser/fastparser.cxx:1061:21 (instdir/program/libexpwraplo.so +0x23e2e4) > #26 in sax_fastparser::FastSaxParserImpl::parseStream(com::sun::star::xml::sax::InputSource const&) at sax/source/fastparser/fastparser.cxx:870:9 (instdir/program/libexpwraplo.so +0x237beb) > #27 in sax_fastparser::FastSaxParser::parseStream(com::sun::star::xml::sax::InputSource const&) at sax/source/fastparser/fastparser.cxx:1377:13 (instdir/program/libexpwraplo.so +0x2528ab) > #28 in writerfilter::ooxml::OOXMLDocumentImpl::resolve(writerfilter::Stream&) at writerfilter/source/ooxml/OOXMLDocumentImpl.cxx:503:22 (instdir/program/libwriterfilterlo.so +0x1a69417) > #29 in WriterFilter::filter(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) at writerfilter/source/filter/WriterFilter.cxx:186:24 (instdir/program/libwriterfilterlo.so +0x1a25e0b) > #30 in SfxObjectShell::ImportFrom(SfxMedium&, com::sun::star::uno::Reference<com::sun::star::text::XTextRange> const&) at sfx2/source/doc/objstor.cxx:2251:34 (instdir/program/libsfxlo.so +0x38dc7ff) > #31 in SfxObjectShell::DoLoad(SfxMedium*) at sfx2/source/doc/objstor.cxx:772:23 (instdir/program/libsfxlo.so +0x38a5979) > #32 in SfxBaseModel::load(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) at sfx2/source/doc/sfxbasemodel.cxx:1795:36 (instdir/program/libsfxlo.so +0x3a47e1e) > #33 in (anonymous namespace)::SfxFrameLoader_Impl::load(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&, com::sun::star::uno::Reference<com::sun::star::frame::XFrame> const&) at sfx2/source/view/frmload.cxx:688:28 (instdir/program/libsfxlo.so +0x40c92b0) > #34 in framework::LoadEnv::impl_loadContent() at framework/source/loadenv/loadenv.cxx:1149:37 (instdir/program/libfwklo.so +0x1521191) > #35 in framework::LoadEnv::startLoading() at framework/source/loadenv/loadenv.cxx:383:20 (instdir/program/libfwklo.so +0x1511b76) > #36 in framework::LoadEnv::loadComponentFromURL(com::sun::star::uno::Reference<com::sun::star::frame::XComponentLoader> const&, com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext> const&, rtl::OUString const&, rtl::OUString const&, int, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) at framework/source/loadenv/loadenv.cxx:169:14 (instdir/program/libfwklo.so +0x150d828) > #37 in framework::Desktop::loadComponentFromURL(rtl::OUString const&, rtl::OUString const&, int, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) at framework/source/services/desktop.cxx:619:12 (instdir/program/libfwklo.so +0x167057e) > #38 in non-virtual thunk to framework::Desktop::loadComponentFromURL(rtl::OUString const&, rtl::OUString const&, int, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) at framework/source/services/desktop.cxx (instdir/program/libfwklo.so +0x167078a) > #39 in unotest::MacrosTest::loadFromDesktop(rtl::OUString const&, rtl::OUString const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) at unotest/source/cpp/macros_test.cxx:50:60 (workdir/LinkTarget/CppunitTest/../Library/libunotest.so +0x8f176) > #40 in SwModelTestBase::loadURL(rtl::OUString const&, char const*, char const*) at sw/qa/extras/inc/swmodeltestbase.hxx:762:23 (workdir/LinkTarget/CppunitTest/libtest_sw_ooxmlimport2.so +0x1256b1) > #41 in SwModelTestBase::load(rtl::OUString const&, char const*, char const*) at sw/qa/extras/inc/swmodeltestbase.hxx:717:16 (workdir/LinkTarget/CppunitTest/libtest_sw_ooxmlimport2.so +0x123fd6) > #42 in SwModelTestBase::executeImportTest(char const*, char const*) at sw/qa/extras/inc/swmodeltestbase.hxx:264:13 (workdir/LinkTarget/CppunitTest/libtest_sw_ooxmlimport2.so +0x1236bf) > #43 in testTdf115094::Import() at sw/qa/extras/ooxmlimport/ooxmlimport2.cxx:226:1 (workdir/LinkTarget/CppunitTest/libtest_sw_ooxmlimport2.so +0x18e87d) [...] Change-Id: I04bf52ac9ee45d5bfefe2a406d9c601112baeef9 Reviewed-on: https://gerrit.libreoffice.org/63307 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
Diffstat (limited to 'filter')
-rw-r--r--filter/source/graphicfilter/itiff/itiff.cxx11
1 files changed, 7 insertions, 4 deletions
diff --git a/filter/source/graphicfilter/itiff/itiff.cxx b/filter/source/graphicfilter/itiff/itiff.cxx
index a2b8ddb06ae8..d2bb00e3720f 100644
--- a/filter/source/graphicfilter/itiff/itiff.cxx
+++ b/filter/source/graphicfilter/itiff/itiff.cxx
@@ -863,13 +863,16 @@ bool TIFFReader::ConvertScanline(sal_Int32 nY)
sal_uInt8 nLAlpha = 0;
for (sal_Int32 nx = 0; nx < nImageWidth; nx++, pt += nSamplesPerPixel)
{
- nLRed = nLRed + pt[ 0 ];
- nLGreen = nLGreen + pt[ 1 ];
- nLBlue = nLBlue + pt[ 2 ];
+ // The following computations rely on sal_uInt8 wrap-around when adding the
+ // (unsigned) pt deltas; the "& 0xFF" is only conceptual, but helps prevent
+ // sanitizer warnings:
+ nLRed = (nLRed + pt[ 0 ]) & 0xFF;
+ nLGreen = (nLGreen + pt[ 1 ]) & 0xFF;
+ nLBlue = (nLBlue + pt[ 2 ]) & 0xFF;
SetPixel(nY, nx, Color(nLRed, nLGreen, nLBlue));
if (HasAlphaChannel())
{
- nLAlpha = nLAlpha + pt[ 3 ];
+ nLAlpha = (nLAlpha + pt[ 3 ]) & 0xFF;
SetPixelAlpha(nY, nx, ~nLAlpha);
}
}