From c5e0be4f86bffeafd6642e6eb2c6758f4b27beaa Mon Sep 17 00:00:00 2001 From: Caolán McNamara Date: Fri, 11 Nov 2011 11:54:19 +0000 Subject: add an initial ppt cve test --- sd/CppunitTest_sd_filters_test.mk | 4 ++++ sd/RdbTarget_sd_filters_test.mk | 1 + sd/prj/build.lst | 2 +- sd/qa/unit/data/ppt/fail/.gitignore | 0 sd/qa/unit/data/ppt/indeterminate/.gitignore | 0 sd/qa/unit/data/ppt/pass/.gitignore | 0 sd/qa/unit/data/ppt/pass/CVE-2006-3656.ppt | Bin 0 -> 35840 bytes sd/qa/unit/filters-test.cxx | 30 +++++++++++++++++++++++++-- 8 files changed, 34 insertions(+), 3 deletions(-) create mode 100644 sd/qa/unit/data/ppt/fail/.gitignore create mode 100644 sd/qa/unit/data/ppt/indeterminate/.gitignore create mode 100644 sd/qa/unit/data/ppt/pass/.gitignore create mode 100644 sd/qa/unit/data/ppt/pass/CVE-2006-3656.ppt 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 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 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 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 Binary files /dev/null and b/sd/qa/unit/data/ppt/pass/CVE-2006-3656.ppt 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() { } -- cgit v1.2.3