From 40c85b88ad0351acaf59fd2372676cdb8ca452d6 Mon Sep 17 00:00:00 2001 From: Fridrich Štrba Date: Mon, 27 Aug 2012 16:33:13 +0200 Subject: fdo#53592: Try not to crash on empty m_ZipContent Change-Id: I9bdc9997e260a75682177c8641695b60df0c81a6 --- shell/source/win32/ooofilereader/basereader.cxx | 9 ++++++--- shell/source/win32/zipfile/zipfile.cxx | 4 +++- 2 files changed, 9 insertions(+), 4 deletions(-) (limited to 'shell') diff --git a/shell/source/win32/ooofilereader/basereader.cxx b/shell/source/win32/ooofilereader/basereader.cxx index f4f694e6c683..754d37e87e0b 100644 --- a/shell/source/win32/ooofilereader/basereader.cxx +++ b/shell/source/win32/ooofilereader/basereader.cxx @@ -81,9 +81,12 @@ void CBaseReader::Initialize( const std::string& ContentName) if (m_ZipContent.empty()) m_ZipFile.GetUncompressedContent( ContentName, m_ZipContent ); - xml_parser parser; - parser.set_document_handler(this); // pass current reader as reader to the sax parser - parser.parse(&m_ZipContent[0], m_ZipContent.size()); + if (!m_ZipContent.empty()) + { + xml_parser parser; + parser.set_document_handler(this); // pass current reader as reader to the sax parser + parser.parse(&m_ZipContent[0], m_ZipContent.size()); + } } catch(std::exception& #if OSL_DEBUG_LEVEL > 0 diff --git a/shell/source/win32/zipfile/zipfile.cxx b/shell/source/win32/zipfile/zipfile.cxx index 13b319cc749c..381e52cf7642 100644 --- a/shell/source/win32/zipfile/zipfile.cxx +++ b/shell/source/win32/zipfile/zipfile.cxx @@ -261,6 +261,8 @@ static bool areHeadersConsistent(const LocalFileHeader &header, const CentralDir static bool findCentralDirectoryEnd(StreamInterface *stream) { + if (!stream) + return false; stream->sseek(0, SEEK_SET); try { @@ -483,7 +485,7 @@ void ZipFile::GetUncompressedContent( ContentBuffer.clear(); return; } - (void)inflateEnd(&strm); + (void)inflateEnd(&strm); } } -- cgit