diff options
author | Caolán McNamara <caolanm@redhat.com> | 2011-03-02 09:01:51 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2011-03-02 09:01:51 +0000 |
commit | 46ed13bd300e5c68c091a3263b9835db54a3bfb0 (patch) | |
tree | 4e3ae3e6f7c9e72acac167b84ce9f4dac66b3182 /sw/qa | |
parent | 13875a7b43e105e91cbe85119efd1863572fee05 (diff) |
add regression test for CVE-2006-3117
Diffstat (limited to 'sw/qa')
-rw-r--r-- | sw/qa/core/CVE/CVE-2006-3117-1.sxw | bin | 0 -> 441416 bytes | |||
-rw-r--r-- | sw/qa/core/makefile.mk | 4 | ||||
-rw-r--r-- | sw/qa/core/swdoc-test.cxx | 41 |
3 files changed, 42 insertions, 3 deletions
diff --git a/sw/qa/core/CVE/CVE-2006-3117-1.sxw b/sw/qa/core/CVE/CVE-2006-3117-1.sxw Binary files differnew file mode 100644 index 000000000000..49acb42d81e8 --- /dev/null +++ b/sw/qa/core/CVE/CVE-2006-3117-1.sxw diff --git a/sw/qa/core/makefile.mk b/sw/qa/core/makefile.mk index 1a63795d5d98..7fb2a9c8d577 100644 --- a/sw/qa/core/makefile.mk +++ b/sw/qa/core/makefile.mk @@ -27,7 +27,7 @@ PRJ=..$/.. PRJNAME=sw -TARGET=test-bigptrarray +TARGET=qa_unit ENABLE_EXCEPTIONS=TRUE @@ -46,8 +46,6 @@ SHL1STDLIBS=$(SALLIB) $(TOOLSLIB) $(CPPUNITLIB) SHL1IMPLIB= i$(SHL1TARGET) -# SHL1DEF= $(MISC)$/$(SHL1TARGET).def - DEF1NAME =$(SHL1TARGET) SHL1VERSIONMAP = export.map diff --git a/sw/qa/core/swdoc-test.cxx b/sw/qa/core/swdoc-test.cxx index d082ca4b2c05..343fcceafb0d 100644 --- a/sw/qa/core/swdoc-test.cxx +++ b/sw/qa/core/swdoc-test.cxx @@ -47,9 +47,12 @@ #include <cppuhelper/basemutex.hxx> #include <comphelper/processfactory.hxx> #include <vcl/svapp.hxx> + #include <sfx2/app.hxx> +#include <sfx2/docfilt.hxx> #include <sfx2/docfile.hxx> #include <sfx2/sfxmodelfactory.hxx> + #include <tools/urlobj.hxx> #include <unotools/tempfile.hxx> #include <ucbhelper/contentbroker.hxx> @@ -82,14 +85,22 @@ public: virtual void setUp(); virtual void tearDown(); + bool testLoad(const rtl::OUString &rFilter, const rtl::OUString &rURL); + void randomTest(); void testPageDescName(); void testFileNameFields(); + /** + * Ensure CVEs remain unbroken + */ + void testCVEs(); + CPPUNIT_TEST_SUITE(SwDocTest); CPPUNIT_TEST(randomTest); CPPUNIT_TEST(testPageDescName); CPPUNIT_TEST(testFileNameFields); + CPPUNIT_TEST(testCVEs); CPPUNIT_TEST_SUITE_END(); private: @@ -97,6 +108,7 @@ private: uno::Reference<lang::XMultiComponentFactory> m_xFactory; SwDoc *m_pDoc; SwDocShellRef m_xDocShRef; + ::rtl::OUString m_aPWDURL; }; void SwDocTest::testPageDescName() @@ -170,6 +182,32 @@ void SwDocTest::testFileNameFields() m_xDocShRef->DoInitNew(0); } +bool SwDocTest::testLoad(const rtl::OUString &rFilter, const rtl::OUString &rURL) +{ + SfxFilter aFilter( + rFilter, + rtl::OUString(), 0, 0, rtl::OUString(), 0, rtl::OUString(), + rtl::OUString(), rtl::OUString() ); + + SwDocShellRef xDocShRef = new SwDocShell; + SfxMedium aSrcMed(rURL, STREAM_STD_READ, true); + aSrcMed.SetFilter(&aFilter); + return xDocShRef->DoLoad(&aSrcMed); +} + +void SwDocTest::testCVEs() +{ +//To-Do: I know this works on Linux, please check if this test works under +//windows and enable it if so +#ifndef WNT + bool bResult; + + bResult = testLoad(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("StarOffice XML (Writer)")), + m_aPWDURL + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("/CVE/CVE-2006-3117-1.sxw"))); + CPPUNIT_ASSERT_MESSAGE("CVE-2006-3117 regression", bResult == false); +#endif +} + void SwDocTest::randomTest() { CPPUNIT_ASSERT_MESSAGE("SwDoc::IsRedlineOn()", !m_pDoc->IsRedlineOn()); @@ -191,6 +229,9 @@ SwDocTest::SwDocTest() SwDLL::Init(); + oslProcessError err = osl_getProcessWorkingDir(&m_aPWDURL.pData); + CPPUNIT_ASSERT_MESSAGE("no PWD!", err == osl_Process_E_None); + ErrorHandler::RegisterDisplay(&aWndFunc); } |