From 27c3b8bca22353dfdcf4c248539a727522fc4e76 Mon Sep 17 00:00:00 2001 From: Maxim Monastirsky Date: Tue, 25 Feb 2014 14:16:25 +0200 Subject: Don't write compound header to zero length files MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: Ie964ca8b870714d1c3e92469a771fab9a71f0633 Reviewed-on: https://gerrit.libreoffice.org/8220 Reviewed-by: Caolán McNamara Tested-by: Caolán McNamara --- starmath/source/smdetect.cxx | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'starmath') diff --git a/starmath/source/smdetect.cxx b/starmath/source/smdetect.cxx index d25f0dd54654..3d23031d8d8e 100644 --- a/starmath/source/smdetect.cxx +++ b/starmath/source/smdetect.cxx @@ -296,7 +296,20 @@ OUString SAL_CALL SmFilterDetect::detect( Sequence< PropertyValue >& lDescriptor //this approach, to be fixed at a better level than here SvStream *pStrm = aMedium.GetInStream(); aTypeName = OUString(); - if (pStrm && !pStrm->GetError()) + + sal_Size nSize = 0; + if ( pStrm && !pStrm->GetError() ) + { + pStrm->Seek( STREAM_SEEK_TO_END ); + nSize = pStrm->Tell(); + pStrm->Seek( STREAM_SEEK_TO_BEGIN ); + } + + // Do not attempt to create an SotStorage on a + // 0-length stream as that would create the compound + // document header on the stream and effectively write to + // disk! + if ( nSize > 0 ) { SotStorageRef aStorage = new SotStorage ( pStrm, false ); if ( !aStorage->GetError() ) -- cgit