diff options
author | Fridrich Štrba <fridrich.strba@bluewin.ch> | 2012-08-27 16:33:13 +0200 |
---|---|---|
committer | Fridrich Štrba <fridrich.strba@bluewin.ch> | 2012-08-27 16:33:13 +0200 |
commit | 40c85b88ad0351acaf59fd2372676cdb8ca452d6 (patch) | |
tree | 44948c7931cda7f4925b4b0a8ad68ffccef38a71 /shell/source | |
parent | d3300205918f87054c9dd399ac53ad1e979dcdc7 (diff) |
fdo#53592: Try not to crash on empty m_ZipContent
Change-Id: I9bdc9997e260a75682177c8641695b60df0c81a6
Diffstat (limited to 'shell/source')
-rw-r--r-- | shell/source/win32/ooofilereader/basereader.cxx | 9 | ||||
-rw-r--r-- | shell/source/win32/zipfile/zipfile.cxx | 4 |
2 files changed, 9 insertions, 4 deletions
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); } } |