summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephan Bergmann <sbergman@redhat.com>2019-06-17 14:01:42 +0200
committerStephan Bergmann <sbergman@redhat.com>2019-06-17 14:54:02 +0200
commit0c8ac718247d374741c878b161d901c279d00bc8 (patch)
treec0056d3832f82f49f9a503c9bb91720ad221f5a6
parent3c5a468c4a9896d0c7b579002789cd87eb31dffd (diff)
At least log errors in GfxLink::GetSwapInData
I happened to get the below -fsanitize=invalid-null-argument failure just once during `--convert-to pdf xlsx/tdf114171-1.xlsx`, presumably as a consequence of an unknown error here. > tools/source/stream/stream.cxx:1687:24: runtime error: null pointer passed as argument 2, which is declared to never be null > /usr/include/string.h:43:28: note: nonnull attribute specified here > #0 in SvMemoryStream::GetData(void*, unsigned long) at tools/source/stream/stream.cxx:1687:9 > #1 in SvStream::ReadBytes(void*, unsigned long) at tools/source/stream/stream.cxx:1232:18 > #2 in SvStream::readNumberWithoutSwap_(void*, int) at tools/source/stream/stream.cxx:149:9 > #3 in void SvStream::readNumberWithoutSwap<unsigned int>(unsigned int&) at include/tools/stream.hxx:412:7 > #4 in SvStream::ReadUInt32(unsigned int&) at tools/source/stream/stream.cxx:828:5 > #5 in GraphicDescriptor::ImpDetectGIF(SvStream&, bool) at vcl/source/filter/graphicfilter2.cxx:185:10 > #6 in GraphicDescriptor::Detect(bool) at vcl/source/filter/graphicfilter2.cxx:66:19 > #7 in ImpGraphic::ImplSetPrepared(bool, Size*) at vcl/source/gdi/impgraph.cxx:541:25 > #8 in GraphicFilter::ImportUnloadedGraphic(SvStream&, unsigned long, Size*) at vcl/source/filter/graphicfilter.cxx:1407:43 > #9 in (anonymous namespace)::GraphicProvider::queryGraphic(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) at vcl/source/graphic/UnoGraphicProvider.cxx:410:44 > #10 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 > #11 in oox::GraphicHelper::importGraphic(com::sun::star::uno::Reference<com::sun::star::io::XInputStream> const&, WmfExternal const*) const at oox/source/helper/graphichelper.cxx:275:39 > #12 in oox::GraphicHelper::importEmbeddedGraphic(rtl::OUString const&, WmfExternal const*) const at oox/source/helper/graphichelper.cxx:363:24 > #13 in #33 in oox::xls::Shape::finalizeXShape(oox::core::XmlFilterBase&, com::sun::star::uno::Reference<com::sun::star::drawing::XShapes> const&) at sc/source/filter/oox/drawingfragment.cxx:112:30 [...] Change-Id: I7fb38aad6b2147d650e3907d5734d8ade84353d8 Reviewed-on: https://gerrit.libreoffice.org/74165 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
-rw-r--r--vcl/source/gdi/gfxlink.cxx18
1 files changed, 15 insertions, 3 deletions
diff --git a/vcl/source/gdi/gfxlink.cxx b/vcl/source/gdi/gfxlink.cxx
index e92c06b4573a..e042a48e0aa4 100644
--- a/vcl/source/gdi/gfxlink.cxx
+++ b/vcl/source/gdi/gfxlink.cxx
@@ -272,10 +272,22 @@ std::shared_ptr<sal_uInt8> GfxLink::GetSwapInData() const
SvFileStream aFileStream(mpSwapOutData->maURL, StreamMode::STD_READ);
pData = o3tl::make_shared_array<sal_uInt8>(mnSwapInDataSize);
aFileStream.ReadBytes(pData.get(), mnSwapInDataSize);
- bool bError = (ERRCODE_NONE != aFileStream.GetError());
- sal_uInt64 const nActReadSize = aFileStream.Tell();
- if (nActReadSize != mnSwapInDataSize)
+ bool bError = false;
+ auto const e = aFileStream.GetError();
+ if (e != ERRCODE_NONE) {
+ SAL_WARN("vcl", "reading <" << mpSwapOutData->maURL << "> failed with " << e);
bError = true;
+ }
+ if (!bError) {
+ sal_uInt64 const nActReadSize = aFileStream.Tell();
+ if (nActReadSize != mnSwapInDataSize) {
+ SAL_WARN(
+ "vcl",
+ "reading <" << mpSwapOutData->maURL << "> produced " << nActReadSize
+ << " instead of " << mnSwapInDataSize << " bytes");
+ bError = true;
+ }
+ }
if (bError)
pData.reset();
return pData;