--- misc/libwpd-0.9.4/src/lib/WPXBinaryData.cpp 2011-10-28 15:37:48.000000000 +0200 +++ misc/build/libwpd-0.9.4/src/lib/WPXBinaryData.cpp 2012-06-09 00:02:43.293981048 +0200 @@ -174,7 +174,14 @@ const WPXInputStream *WPXBinaryData::getDataStream() const { if (m_binaryDataImpl->m_stream) + { delete (m_binaryDataImpl->m_stream); - return ((m_binaryDataImpl->m_stream) = new WPXMemoryInputStream(&(m_binaryDataImpl->m_buf[0]), m_binaryDataImpl->m_buf.size())); + m_binaryDataImpl->m_stream = 0; + } + if (m_binaryDataImpl->m_buf.empty()) + return 0; + m_binaryDataImpl->m_stream = new WPXMemoryInputStream(&(m_binaryDataImpl->m_buf[0]), m_binaryDataImpl->m_buf.size()); + return m_binaryDataImpl->m_stream; } + /* vim:set shiftwidth=4 softtabstop=4 noexpandtab: */ --- misc/libwpd-0.9.4/src/lib/WP42Heuristics.cpp +++ misc/build/libwpd-0.9.4/src/lib/WP42Heuristics.cpp @@ -70,6 +70,28 @@ WPXEncryption *encryption = 0; try { + // Disregard XML at least right away + if (readU8(input, 0) == '<' && + readU8(input, 0) == '?' && + readU8(input, 0) == 'x' && + readU8(input, 0) == 'm' && + readU8(input, 0) == 'l' && + readU8(input, 0) == ' ') + return WPD_CONFIDENCE_NONE; + input->seek(0, WPX_SEEK_SET); + + if (readU8(input, 0) == 0xEF && + readU8(input, 0) == 0xBB && + readU8(input, 0) == 0xBF && + readU8(input, 0) == '<' && + readU8(input, 0) == '?' && + readU8(input, 0) == 'x' && + readU8(input, 0) == 'm' && + readU8(input, 0) == 'l' && + readU8(input, 0) == ' ') + return WPD_CONFIDENCE_NONE; + input->seek(0, WPX_SEEK_SET); + if (readU8(input, 0) == 0xFE && readU8(input, 0) == 0xFF && readU8(input, 0) == 0x61 && readU8(input, 0) == 0x61) {