diff options
Diffstat (limited to 'filter')
-rw-r--r-- | filter/CppunitTest_filter_tga_test.mk | 69 | ||||
-rw-r--r-- | filter/Module_filter.mk | 1 | ||||
-rw-r--r-- | filter/qa/cppunit/data/tga/fail/.gitignore | 0 | ||||
-rw-r--r-- | filter/qa/cppunit/data/tga/indeterminate/.gitignore | 1 | ||||
-rw-r--r-- | filter/qa/cppunit/data/tga/pass/.gitignore | 0 | ||||
-rw-r--r-- | filter/qa/cppunit/data/tga/pass/fdo14924-5.tga | bin | 0 -> 2005 bytes | |||
-rw-r--r-- | filter/qa/cppunit/data/tga/pass/fdo14924-6.tga | bin | 0 -> 3171 bytes | |||
-rw-r--r-- | filter/qa/cppunit/filters-tga-test.cxx | 89 | ||||
-rw-r--r-- | filter/source/graphicfilter/itga/itga.cxx | 21 |
9 files changed, 170 insertions, 11 deletions
diff --git a/filter/CppunitTest_filter_tga_test.mk b/filter/CppunitTest_filter_tga_test.mk new file mode 100644 index 000000000000..aba721461271 --- /dev/null +++ b/filter/CppunitTest_filter_tga_test.mk @@ -0,0 +1,69 @@ +# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- +# Version: MPL 1.1 / GPLv3+ / LGPLv3+ +# +# The contents of this file are subject to the Mozilla Public License Version +# 1.1 (the "License"); you may not use this file except in compliance with +# the License or as specified alternatively below. You may obtain a copy of +# the License at http://www.mozilla.org/MPL/ +# +# Software distributed under the License is distributed on an "AS IS" basis, +# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +# for the specific language governing rights and limitations under the +# License. +# +# Major Contributor(s): +# Copyright (C) 2012 Red Hat, Inc., Caolán McNamara <caolanm@redhat.com> +# (initial developer) +# +# All Rights Reserved. +# +# For minor contributions see the git repository. +# +# Alternatively, the contents of this file may be used under the terms of +# either the GNU General Public License Version 3 or later (the "GPLv3+"), or +# the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"), +# in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable +# instead of those above. + +$(eval $(call gb_CppunitTest_CppunitTest,filter_tga_test)) + +$(eval $(call gb_CppunitTest_add_exception_objects,filter_tga_test, \ + filter/qa/cppunit/filters-tga-test \ +)) + +$(eval $(call gb_CppunitTest_add_linked_libs,filter_tga_test, \ + itg \ + sal \ + test \ + tl \ + unotest \ + vcl \ + $(gb_STDLIBS) \ +)) + +$(eval $(call gb_CppunitTest_set_include,filter_tga_test,\ + $$(INCLUDE) \ +)) + +$(eval $(call gb_CppunitTest_add_api,filter_tga_test,\ + udkapi \ + offapi \ +)) + +$(eval $(call gb_CppunitTest_uses_ure,filter_tga_test)) + +$(eval $(call gb_CppunitTest_add_type_rdbs,filter_tga_test,\ + types \ +)) + +$(eval $(call gb_CppunitTest_add_components,filter_tga_test,\ + configmgr/source/configmgr \ +)) + +$(eval $(call gb_CppunitTest_set_args,filter_tga_test,\ + --headless \ + --protector unoexceptionprotector$(gb_Library_DLLEXT) unoexceptionprotector \ + "-env:CONFIGURATION_LAYERS=xcsxcu:$(call gb_CppunitTarget__make_url,$(OUTDIR)/xml/registry)" \ +)) + +# vim: set noet sw=4 ts=4: diff --git a/filter/Module_filter.mk b/filter/Module_filter.mk index dc8842e7a0b3..4f9773de351c 100644 --- a/filter/Module_filter.mk +++ b/filter/Module_filter.mk @@ -78,6 +78,7 @@ endif ifneq ($(OS),WNT) # TODO, see if it links and runs under windows $(eval $(call gb_Module_add_check_targets,filter,\ + CppunitTest_filter_tga_test \ CppunitTest_filter_tiff_test \ )) endif diff --git a/filter/qa/cppunit/data/tga/fail/.gitignore b/filter/qa/cppunit/data/tga/fail/.gitignore new file mode 100644 index 000000000000..e69de29bb2d1 --- /dev/null +++ b/filter/qa/cppunit/data/tga/fail/.gitignore diff --git a/filter/qa/cppunit/data/tga/indeterminate/.gitignore b/filter/qa/cppunit/data/tga/indeterminate/.gitignore new file mode 100644 index 000000000000..583b009c7c60 --- /dev/null +++ b/filter/qa/cppunit/data/tga/indeterminate/.gitignore @@ -0,0 +1 @@ +*.wmf-* diff --git a/filter/qa/cppunit/data/tga/pass/.gitignore b/filter/qa/cppunit/data/tga/pass/.gitignore new file mode 100644 index 000000000000..e69de29bb2d1 --- /dev/null +++ b/filter/qa/cppunit/data/tga/pass/.gitignore diff --git a/filter/qa/cppunit/data/tga/pass/fdo14924-5.tga b/filter/qa/cppunit/data/tga/pass/fdo14924-5.tga Binary files differnew file mode 100644 index 000000000000..c3b38f313f82 --- /dev/null +++ b/filter/qa/cppunit/data/tga/pass/fdo14924-5.tga diff --git a/filter/qa/cppunit/data/tga/pass/fdo14924-6.tga b/filter/qa/cppunit/data/tga/pass/fdo14924-6.tga Binary files differnew file mode 100644 index 000000000000..92b720053702 --- /dev/null +++ b/filter/qa/cppunit/data/tga/pass/fdo14924-6.tga diff --git a/filter/qa/cppunit/filters-tga-test.cxx b/filter/qa/cppunit/filters-tga-test.cxx new file mode 100644 index 000000000000..3de9d53ba807 --- /dev/null +++ b/filter/qa/cppunit/filters-tga-test.cxx @@ -0,0 +1,89 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * Version: MPL 1.1 / GPLv3+ / LGPLv3+ + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Initial Developer of the Original Code is + * Caolán McNamara <caolanm@redhat.com> + * Portions created by the Initial Developer are Copyright (C) 2012 the + * Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Caolán McNamara <caolanm@redhat.com> + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 3 or later (the "GPLv3+"), or + * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"), + * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable + * instead of those above. + */ + +#include <unotest/filters-test.hxx> +#include <test/bootstrapfixture.hxx> +#include <svtools/FilterConfigItem.hxx> +#include <tools/stream.hxx> +#include <tools/stream.hxx> +#include <vcl/graph.hxx> + +#include <osl/file.hxx> +#include <osl/process.h> + +extern "C" +{ + SAL_DLLPUBLIC_EXPORT sal_Bool __LOADONCALLAPI + GraphicImport(SvStream & rStream, Graphic & rGraphic, + FilterConfigItem*, sal_Bool); +} + +using namespace ::com::sun::star; + +/* Implementation of Filters test */ + +class TgaFilterTest + : public test::FiltersTest + , public test::BootstrapFixture +{ +public: + TgaFilterTest() : BootstrapFixture(true, false) {} + + virtual bool load(const rtl::OUString &, const rtl::OUString &rURL, const rtl::OUString &); + + /** + * Ensure CVEs remain unbroken + */ + void testCVEs(); + + CPPUNIT_TEST_SUITE(TgaFilterTest); + CPPUNIT_TEST(testCVEs); + CPPUNIT_TEST_SUITE_END(); +}; + +bool TgaFilterTest::load(const rtl::OUString &, + const rtl::OUString &rURL, const rtl::OUString &) +{ + SvFileStream aFileStream(rURL, STREAM_READ); + Graphic aGraphic; + return GraphicImport(aFileStream, aGraphic, NULL, 0); +} + +void TgaFilterTest::testCVEs() +{ + testDir(rtl::OUString(), + getURLFromSrc("/filter/qa/cppunit/data/tga/"), + rtl::OUString()); +} + +CPPUNIT_TEST_SUITE_REGISTRATION(TgaFilterTest); + +CPPUNIT_PLUGIN_IMPLEMENT(); + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/filter/source/graphicfilter/itga/itga.cxx b/filter/source/graphicfilter/itga/itga.cxx index 35d438bef8e1..080b0b98efb5 100644 --- a/filter/source/graphicfilter/itga/itga.cxx +++ b/filter/source/graphicfilter/itga/itga.cxx @@ -304,7 +304,6 @@ sal_Bool TGAReader::ImplReadBody() nYAdd -=2; } -// nDepth = mpFileHeader->nPixelDepth - ( mpFileHeader->nImageDescriptor & 0xf ); nDepth = mpFileHeader->nPixelDepth; if ( mbEncoding ) @@ -339,7 +338,7 @@ sal_Bool TGAReader::ImplReadBody() nYCount++; if( nYCount >= mpFileHeader->nImageHeight ) - return false; // invalid picture + break; } } } @@ -364,7 +363,7 @@ sal_Bool TGAReader::ImplReadBody() nYCount++; if( nYCount >= mpFileHeader->nImageHeight ) - return false; // invalid picture + break; } } } @@ -394,7 +393,7 @@ sal_Bool TGAReader::ImplReadBody() nYCount++; if( nYCount >= mpFileHeader->nImageHeight ) - return false; // invalid picture + break; } } } @@ -417,7 +416,7 @@ sal_Bool TGAReader::ImplReadBody() nYCount++; if( nYCount >= mpFileHeader->nImageHeight ) - return false; // invalid picture + break; } } } @@ -453,7 +452,7 @@ sal_Bool TGAReader::ImplReadBody() nYCount++; if( nYCount >= mpFileHeader->nImageHeight ) - return false; // invalid picture + break; } } } @@ -473,7 +472,7 @@ sal_Bool TGAReader::ImplReadBody() nYCount++; if( nYCount >= mpFileHeader->nImageHeight ) - return false; // invalid picture + break; } } } @@ -502,7 +501,7 @@ sal_Bool TGAReader::ImplReadBody() nYCount++; if( nYCount >= mpFileHeader->nImageHeight ) - return false; // invalid picture + break; } } } @@ -522,7 +521,7 @@ sal_Bool TGAReader::ImplReadBody() nYCount++; if( nYCount >= mpFileHeader->nImageHeight ) - return false; // invalid picture + break; } } } @@ -553,7 +552,7 @@ sal_Bool TGAReader::ImplReadBody() nYCount++; if( nYCount >= mpFileHeader->nImageHeight ) - return false; // invalid picture + break; } } } @@ -576,7 +575,7 @@ sal_Bool TGAReader::ImplReadBody() nYCount++; if( nYCount >= mpFileHeader->nImageHeight ) - return false; // invalid picture + break; } } } |