diff options
author | Caolán McNamara <caolanm@redhat.com> | 2016-07-28 14:31:06 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2016-07-28 14:40:29 +0100 |
commit | 2710211eb2333cafdb894742a8fa73fb02dc513b (patch) | |
tree | 0f2befb97d0a6f0fce4bb7de62a3067561469fff /writerfilter | |
parent | 7a887df4db129ac5222fd4068173b5a06d107a59 (diff) |
fftester: throw on empty stack access
rather than spend the rest of my life protecting each one
Change-Id: I181df33b052a0303f072ce0252d98562231569e2
Diffstat (limited to 'writerfilter')
-rw-r--r-- | writerfilter/qa/cppunittests/rtftok/data/fail/popstate-1.rtf (renamed from writerfilter/qa/cppunittests/rtftok/data/pass/popstate-1.rtf) | bin | 198 -> 198 bytes | |||
-rw-r--r-- | writerfilter/qa/cppunittests/rtftok/data/fail/popstate-2.rtf | 1 | ||||
-rw-r--r-- | writerfilter/qa/cppunittests/rtftok/testrtftok.cxx | 4 | ||||
-rw-r--r-- | writerfilter/source/rtftok/rtfdocumentimpl.cxx | 2 | ||||
-rw-r--r-- | writerfilter/source/rtftok/rtfdocumentimpl.hxx | 4 |
5 files changed, 9 insertions, 2 deletions
diff --git a/writerfilter/qa/cppunittests/rtftok/data/pass/popstate-1.rtf b/writerfilter/qa/cppunittests/rtftok/data/fail/popstate-1.rtf Binary files differindex 04189171327a..04189171327a 100644 --- a/writerfilter/qa/cppunittests/rtftok/data/pass/popstate-1.rtf +++ b/writerfilter/qa/cppunittests/rtftok/data/fail/popstate-1.rtf diff --git a/writerfilter/qa/cppunittests/rtftok/data/fail/popstate-2.rtf b/writerfilter/qa/cppunittests/rtftok/data/fail/popstate-2.rtf new file mode 100644 index 000000000000..273bb135c9d0 --- /dev/null +++ b/writerfilter/qa/cppunittests/rtftok/data/fail/popstate-2.rtf @@ -0,0 +1 @@ +\\rttt\noTidqtpdp{\"pb18}\p{\"ptxtbr } diff --git a/writerfilter/qa/cppunittests/rtftok/testrtftok.cxx b/writerfilter/qa/cppunittests/rtftok/testrtftok.cxx index 12110377b0f0..e380728b3c30 100644 --- a/writerfilter/qa/cppunittests/rtftok/testrtftok.cxx +++ b/writerfilter/qa/cppunittests/rtftok/testrtftok.cxx @@ -74,6 +74,10 @@ bool RtfTest::load(const OUString&, } throw; } + catch (const std::exception&) + { + return false; + } } void RtfTest::test() diff --git a/writerfilter/source/rtftok/rtfdocumentimpl.cxx b/writerfilter/source/rtftok/rtfdocumentimpl.cxx index b7bea75a2f8b..45be8a691d4e 100644 --- a/writerfilter/source/rtftok/rtfdocumentimpl.cxx +++ b/writerfilter/source/rtftok/rtfdocumentimpl.cxx @@ -1872,8 +1872,6 @@ RTFError RTFDocumentImpl::popState() // ", dest state: " << m_aStates.top().eDestination); checkUnicode(/*bUnicode =*/ true, /*bHex =*/ true); - if (m_aStates.empty()) - return RTFError::GROUP_UNDER; RTFParserState aState(m_aStates.top()); m_bWasInFrame = aState.aFrame.inFrame(); diff --git a/writerfilter/source/rtftok/rtfdocumentimpl.hxx b/writerfilter/source/rtftok/rtfdocumentimpl.hxx index 5ad21b2233dd..c8a28d321717 100644 --- a/writerfilter/source/rtftok/rtfdocumentimpl.hxx +++ b/writerfilter/source/rtftok/rtfdocumentimpl.hxx @@ -316,10 +316,14 @@ private: public: RTFParserState& top() { + if (m_Impl.empty()) + throw std::out_of_range("empty rtf state stack"); return m_Impl.back(); } void pop() { + if (m_Impl.empty()) + throw std::out_of_range("empty rtf state stack"); return m_Impl.pop_back(); } void push(RTFParserState const& rState) |