summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2011-11-11 11:54:19 +0000
committerCaolán McNamara <caolanm@redhat.com>2011-11-11 11:55:05 +0000
commitc5e0be4f86bffeafd6642e6eb2c6758f4b27beaa (patch)
tree69e7a1868cc4361bf57367911d024b1ec472fdd5
parent5aea780bfd46a369ed6c8ef3505dcaeb6f44323d (diff)
add an initial ppt cve test
-rw-r--r--sd/CppunitTest_sd_filters_test.mk4
-rw-r--r--sd/RdbTarget_sd_filters_test.mk1
-rw-r--r--sd/prj/build.lst2
-rw-r--r--sd/qa/unit/data/ppt/fail/.gitignore0
-rw-r--r--sd/qa/unit/data/ppt/indeterminate/.gitignore0
-rw-r--r--sd/qa/unit/data/ppt/pass/.gitignore0
-rw-r--r--sd/qa/unit/data/ppt/pass/CVE-2006-3656.pptbin0 -> 35840 bytes
-rw-r--r--sd/qa/unit/filters-test.cxx30
8 files changed, 34 insertions, 3 deletions
diff --git a/sd/CppunitTest_sd_filters_test.mk b/sd/CppunitTest_sd_filters_test.mk
index b708aa9d3dc9..8e2f50571517 100644
--- a/sd/CppunitTest_sd_filters_test.mk
+++ b/sd/CppunitTest_sd_filters_test.mk
@@ -128,4 +128,8 @@ $(eval $(call gb_CppunitTest_set_args,sd_filters_test,\
))
# .../spool is required for the (somewhat strange) filter configuration
+# we need to explicitly depend on library sdfilt because it is not implied
+# by a link relation
+$(call gb_CppunitTest_get_target,sd_filters_test) : $(call gb_Library_get_target,sdfilt)
+
# vim: set noet sw=4 ts=4:
diff --git a/sd/RdbTarget_sd_filters_test.mk b/sd/RdbTarget_sd_filters_test.mk
index d3a15d80f3fe..5ca090744225 100644
--- a/sd/RdbTarget_sd_filters_test.mk
+++ b/sd/RdbTarget_sd_filters_test.mk
@@ -57,6 +57,7 @@ $(eval $(call gb_RdbTarget_add_components,sd_filters_test,\
))
$(eval $(call gb_RdbTarget_add_old_components,sd_filters_test,\
+ embobj \
configmgr \
ucb1 \
ucpfile1 \
diff --git a/sd/prj/build.lst b/sd/prj/build.lst
index e1dc016c5080..91456d30371a 100644
--- a/sd/prj/build.lst
+++ b/sd/prj/build.lst
@@ -1,3 +1,3 @@
-sd sd : filter TRANSLATIONS:translations animations svx sfx2 stoc canvas LIBXSLT:libxslt oox ure test xmloff NULL
+sd sd : filter TRANSLATIONS:translations animations svx sfx2 stoc canvas embeddedobj LIBXSLT:libxslt oox ure test xmloff NULL
sd sd usr1 - all sd_mkout NULL
sd sd\prj nmake - all sd_prj NULL
diff --git a/sd/qa/unit/data/ppt/fail/.gitignore b/sd/qa/unit/data/ppt/fail/.gitignore
new file mode 100644
index 000000000000..e69de29bb2d1
--- /dev/null
+++ b/sd/qa/unit/data/ppt/fail/.gitignore
diff --git a/sd/qa/unit/data/ppt/indeterminate/.gitignore b/sd/qa/unit/data/ppt/indeterminate/.gitignore
new file mode 100644
index 000000000000..e69de29bb2d1
--- /dev/null
+++ b/sd/qa/unit/data/ppt/indeterminate/.gitignore
diff --git a/sd/qa/unit/data/ppt/pass/.gitignore b/sd/qa/unit/data/ppt/pass/.gitignore
new file mode 100644
index 000000000000..e69de29bb2d1
--- /dev/null
+++ b/sd/qa/unit/data/ppt/pass/.gitignore
diff --git a/sd/qa/unit/data/ppt/pass/CVE-2006-3656.ppt b/sd/qa/unit/data/ppt/pass/CVE-2006-3656.ppt
new file mode 100644
index 000000000000..a1fd65a19f85
--- /dev/null
+++ b/sd/qa/unit/data/ppt/pass/CVE-2006-3656.ppt
Binary files differ
diff --git a/sd/qa/unit/filters-test.cxx b/sd/qa/unit/filters-test.cxx
index 1ae13d6c3c23..c01414384a6b 100644
--- a/sd/qa/unit/filters-test.cxx
+++ b/sd/qa/unit/filters-test.cxx
@@ -62,15 +62,18 @@ public:
SdFiltersTest();
::sd::DrawDocShellRef loadURL( const rtl::OUString &rURL );
- virtual bool load(const rtl::OUString &, const rtl::OUString &, const rtl::OUString &) { return false; }
+ virtual bool load( const rtl::OUString &rFilter, const rtl::OUString &rURL, const rtl::OUString &rUserData);
+
virtual void setUp();
virtual void tearDown();
- // FIXME: we should add some CVE tests ...
void test();
+ // Ensure CVEs remain unbroken
+ void testCVEs();
CPPUNIT_TEST_SUITE(SdFiltersTest);
CPPUNIT_TEST(test);
+ CPPUNIT_TEST(testCVEs);
CPPUNIT_TEST_SUITE_END();
private:
@@ -155,6 +158,29 @@ void SdFiltersTest::test()
xDocShRef->DoClose();
}
+bool SdFiltersTest::load(const rtl::OUString &rFilter, const rtl::OUString &rURL,
+ const rtl::OUString &rUserData)
+{
+ SfxFilter aFilter(
+ rFilter,
+ rtl::OUString(), 0, 0, rtl::OUString(), 0, rtl::OUString(),
+ rUserData, rtl::OUString() );
+
+ ::sd::DrawDocShellRef xDocShRef = new ::sd::DrawDocShell();
+ SfxMedium* pSrcMed = new SfxMedium(rURL, STREAM_STD_READ, true);
+ pSrcMed->SetFilter(&aFilter);
+ bool bLoaded = xDocShRef->DoLoad(pSrcMed);
+ xDocShRef->DoClose();
+ return bLoaded;
+}
+
+void SdFiltersTest::testCVEs()
+{
+ testDir(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("MS PowerPoint 97")),
+ getURLFromSrc("/sd/qa/unit/data/ppt/"),
+ rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("sdfilt")));
+}
+
SdFiltersTest::SdFiltersTest()
{
}