diff options
author | Stephan Bergmann <sbergman@redhat.com> | 2018-11-12 21:18:16 +0100 |
---|---|---|
committer | Stephan Bergmann <sbergman@redhat.com> | 2018-11-13 07:26:57 +0100 |
commit | f4f3e7919de9d632881e3bca5eba9499450bfaf4 (patch) | |
tree | 888613143521acffd9c237647d8ddc0d29a25339 /filter | |
parent | d30d050c2febe7043d0f70f954ee06e28c4115d9 (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.cxx | 11 |
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); } } |