summaryrefslogtreecommitdiff
path: root/sw/qa
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2011-03-02 09:01:51 +0000
committerCaolán McNamara <caolanm@redhat.com>2011-03-02 09:01:51 +0000
commit46ed13bd300e5c68c091a3263b9835db54a3bfb0 (patch)
tree4e3ae3e6f7c9e72acac167b84ce9f4dac66b3182 /sw/qa
parent13875a7b43e105e91cbe85119efd1863572fee05 (diff)
add regression test for CVE-2006-3117
Diffstat (limited to 'sw/qa')
-rw-r--r--sw/qa/core/CVE/CVE-2006-3117-1.sxwbin0 -> 441416 bytes
-rw-r--r--sw/qa/core/makefile.mk4
-rw-r--r--sw/qa/core/swdoc-test.cxx41
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
new file mode 100644
index 000000000000..49acb42d81e8
--- /dev/null
+++ b/sw/qa/core/CVE/CVE-2006-3117-1.sxw
Binary files differ
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);
}