Hello community, here is the log from the commit of package libwps for openSUSE:Factory checked in at 2017-12-03 10:09:41 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libwps (Old) and /work/SRC/openSUSE:Factory/.libwps.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libwps" Sun Dec 3 10:09:41 2017 rev:41 rq:546410 version:0.4.7 Changes: -------- --- /work/SRC/openSUSE:Factory/libwps/libwps.changes 2017-05-20 10:09:52.212039459 +0200 +++ /work/SRC/openSUSE:Factory/.libwps.new/libwps.changes 2017-12-03 10:09:43.351057659 +0100 @@ -1,0 +2,6 @@ +Wed Nov 29 12:29:12 UTC 2017 - [email protected] + +- Version update to 0.4.7: + * Many fixes found by fuzzing + +------------------------------------------------------------------- Old: ---- libwps-0.4.6.tar.xz New: ---- libwps-0.4.7.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libwps.spec ++++++ --- /var/tmp/diff_new_pack.mmW6Il/_old 2017-12-03 10:09:43.975034973 +0100 +++ /var/tmp/diff_new_pack.mmW6Il/_new 2017-12-03 10:09:43.979034828 +0100 @@ -18,10 +18,10 @@ %define libname libwps-0_4-4 Name: libwps -Version: 0.4.6 +Version: 0.4.7 Release: 0 Summary: Library for the Microsoft Works text and spreadsheet formats -License: LGPL-2.1+ and MPL-2.0+ +License: LGPL-2.1+ AND MPL-2.0+ Group: Productivity/Publishing/Word Url: http://libwps.sourceforge.net/ Source: http://downloads.sourceforge.net/project/%{name}/%{name}/%{name}-%{version}/%{name}-%{version}.tar.xz @@ -87,17 +87,14 @@ %postun -n %{libname} -p /sbin/ldconfig %files -n %{libname} -%defattr(-,root,root) %{_libdir}/*.so.* %files devel -%defattr(-,root,root) %{_libdir}/*.so %{_libdir}/pkgconfig/libwps*.pc %{_includedir}/libwps-* %files tools -%defattr(-,root,root) %{_bindir}/* %doc %dir %{_docdir}/%{name} %doc ChangeLog COPYING.LGPL COPYING.MPL CREDITS NEWS ++++++ libwps-0.4.6.tar.xz -> libwps-0.4.7.tar.xz ++++++ ++++ 2200 lines of diff (skipped) ++++ retrying with extended exclude list diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libwps-0.4.6/ChangeLog new/libwps-0.4.7/ChangeLog --- old/libwps-0.4.6/ChangeLog 2017-03-12 09:53:14.000000000 +0100 +++ new/libwps-0.4.7/ChangeLog 2017-07-16 10:06:11.000000000 +0200 @@ -1,3 +1,88 @@ +2017-07-16 osnola <[email protected]> [b992069290a4c107bb424ef421ee82ba2ae31357] + +tconfigure.ac: update micro version + + +2017-07-16 osnola <[email protected]> [81e5e931109c73e1216aaf4ec9b3de25a650b4ef] + +tUpdate README files... + + +2017-07-03 osnola <[email protected]> [e1b2c2f34268d14aa469c88ab89bd9f491168bd0] + +tg++7: try to remove some warnings... + + +2017-05-20 osnola <[email protected]> [82183981147344f4f56b69b71a572688542dce65] + +tQuattroSpreadsheet.cpp: correct wq1's formula when there is single and double cell's references... + + +2017-04-25 David Tardon <[email protected]> [282239bc81585de00613823c3768327f8b3ce540] + +tofz#1269 fix int overflow + + +2017-04-20 David Tardon <[email protected]> [b7b092e058807ddfc3d8b25c4702012425e3b04e] + +tofz#1083 fix signed integer overflow + + +2017-04-12 David Tardon <[email protected]> [711b02ce6a1280c79bcba9c9c87672914e32d377] + +tofz#1019 fix int overflow + + +2017-04-06 David Tardon <[email protected]> [d896b8f18a31a184a0a333bf6532ec143727e845] + +tadd wq? fuzzer + + +2017-04-06 David Tardon <[email protected]> [036742c56e66888815e04ec9fa9e722830fddde7] + +tadd wk? fuzzer + + +2017-04-06 David Tardon <[email protected]> [8db28cb07e95890da0027949e651bbb2fe81f003] + +tadd 123 fuzzer + + +2017-04-06 David Tardon <[email protected]> [f54e898ca3408660cf7780504ac11ad1c6a8bd0d] + +tadd doc fuzzer + + +2017-04-06 David Tardon <[email protected]> [0d98752779dad668536f9d8ddf16952e9ad6ed22] + +tadd wri fuzzer + + +2017-04-06 David Tardon <[email protected]> [801b3d24fa1820fdbe5ea835a41a4658f3c56348] + +tadd wdb fuzzer + + +2017-04-06 David Tardon <[email protected]> [82420322242a8d3ef8275eeec39456222be77365] + +tadd wks fuzzer + + +2017-04-06 David Tardon <[email protected]> [cfb4b672014a2f5cc81dec25f6cac6445d2d3f4e] + +tadd .gitignore + + +2017-03-31 David Tardon <[email protected]> [e65c68425ec5befe3c5961046925ad43be6b94d4] + +tastyle + + +2017-03-31 David Tardon <[email protected]> [0c1b069fc1f813a6b3c01fb074e3fc826dc07ae9] + +tadd fuzzing driver for oss-fuzz + + 2017-03-04 osnola <[email protected]> [1d29e6f12d6928b2a39df41db5022c0f4ecdf4bb] tupdate some README's files... diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libwps-0.4.6/NEWS new/libwps-0.4.7/NEWS --- old/libwps-0.4.6/NEWS 2017-03-04 10:11:54.000000000 +0100 +++ new/libwps-0.4.7/NEWS 2017-07-16 09:59:07.000000000 +0200 @@ -1,3 +1,7 @@ +0.4.6 -> 0.4.7 +- correct many problem detected with fuzzing, +- QuattroPro: correct reading of wq1 formula with references. + 0.4.5 -> 0.4.6 - Lotus 123: add support to read SmartSuite 98's files, - Lotus: allow to convert file with a password. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libwps-0.4.6/configure.ac new/libwps-0.4.7/configure.ac --- old/libwps-0.4.6/configure.ac 2017-01-09 09:39:57.000000000 +0100 +++ new/libwps-0.4.7/configure.ac 2017-07-16 10:04:58.000000000 +0200 @@ -7,7 +7,7 @@ # ==================== m4_define([libwps_version_major],[0]) m4_define([libwps_version_minor],[4]) -m4_define([libwps_version_micro],[6]) +m4_define([libwps_version_micro],[7]) m4_define([libwps_version],[libwps_version_major.libwps_version_minor.libwps_version_micro]) # ============= @@ -345,7 +345,19 @@ [enable_tools="$enableval"], [enable_tools=yes] ) -AS_IF([test "x$enable_tools" = "xyes"], [ +AM_CONDITIONAL(BUILD_TOOLS, [test "x$enable_tools" = "xyes"]) + +# ======= +# Fuzzers +# ======= +AC_ARG_ENABLE([fuzzers], + [AS_HELP_STRING([--enable-fuzzers], [Build fuzzer(s)])], + [enable_fuzzers="$enableval"], + [enable_fuzzers=no] +) +AM_CONDITIONAL(BUILD_FUZZERS, [test "x$enable_fuzzers" = "xyes"]) + +AS_IF([test "x$enable_tools" = "xyes" -o "x$enable_fuzzers" = "xyes"], [ PKG_CHECK_MODULES([REVENGE_GENERATORS],[ librevenge-generators-0.0 ]) @@ -357,7 +369,6 @@ AC_SUBST([REVENGE_GENERATORS_LIBS]) AC_SUBST([REVENGE_STREAM_CFLAGS]) AC_SUBST([REVENGE_STREAM_LIBS]) -AM_CONDITIONAL(BUILD_TOOLS, [test "x$enable_tools" = "xyes"]) # ===================== # Prepare all .in files @@ -381,6 +392,7 @@ src/conv/wks2raw/wks2raw.rc src/conv/wks2text/Makefile src/conv/wks2text/wks2text.rc +src/fuzz/Makefile src/lib/Makefile src/lib/libwps.rc docs/Makefile @@ -401,6 +413,7 @@ debug: ${enable_debug} full-debug: ${enable_full_debug} docs: ${build_docs} + fuzzers: ${enable_fuzzers} shared_ptr: ${with_sharedptr} static-tools: ${enable_static_tools} werror: ${enable_werror} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libwps-0.4.6/src/Makefile.am new/libwps-0.4.7/src/Makefile.am --- old/libwps-0.4.6/src/Makefile.am 2015-02-03 20:25:32.000000000 +0100 +++ new/libwps-0.4.7/src/Makefile.am 2017-04-02 11:41:38.000000000 +0200 @@ -4,3 +4,6 @@ SUBDIRS += conv endif +if BUILD_FUZZERS +SUBDIRS += fuzz +endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libwps-0.4.6/src/conv/helper/helper.cpp new/libwps-0.4.7/src/conv/helper/helper.cpp --- old/libwps-0.4.6/src/conv/helper/helper.cpp 2016-10-01 18:55:41.000000000 +0200 +++ new/libwps-0.4.7/src/conv/helper/helper.cpp 2017-04-02 11:41:38.000000000 +0200 @@ -104,7 +104,7 @@ /*! \brief seeks to a offset position, from actual, beginning or ending position * \return 0 if ok */ - int seek(long , librevenge::RVNG_SEEK_TYPE) + int seek(long, librevenge::RVNG_SEEK_TYPE) { return 1; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libwps-0.4.6/src/fuzz/123fuzzer.cpp new/libwps-0.4.7/src/fuzz/123fuzzer.cpp --- old/libwps-0.4.6/src/fuzz/123fuzzer.cpp 1970-01-01 01:00:00.000000000 +0100 +++ new/libwps-0.4.7/src/fuzz/123fuzzer.cpp 2017-05-11 12:56:20.000000000 +0200 @@ -0,0 +1,37 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */ +/* libwps + * Version: MPL 2.0 / LGPLv2.1+ + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Major Contributor(s): + * Copyright (C) 2017 David Tardon ([email protected]) + * + * For minor contributions see the git repository. + * + * Alternatively, the contents of this file may be used under the terms + * of the GNU Lesser General Public License Version 2.1 or later + * (LGPLv2.1+), in which case the provisions of the LGPLv2.1+ are + * applicable instead of those above. + */ + +#include <cstdint> +#include <cstdlib> + +#include <librevenge-generators/librevenge-generators.h> + +#include <librevenge-stream/librevenge-stream.h> + +#include <libwps/libwps.h> + +extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) +{ + librevenge::RVNGStringStream input(data, size); + librevenge::RVNGRawSpreadsheetGenerator generator(true); + libwps::WPSDocument::parse(&input, &generator); + return 0; +} + +/* vim:set shiftwidth=4 softtabstop=4 noexpandtab: */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libwps-0.4.6/src/fuzz/Makefile.am new/libwps-0.4.7/src/fuzz/Makefile.am --- old/libwps-0.4.6/src/fuzz/Makefile.am 1970-01-01 01:00:00.000000000 +0100 +++ new/libwps-0.4.7/src/fuzz/Makefile.am 2017-05-11 12:56:20.000000000 +0200 @@ -0,0 +1,56 @@ +noinst_PROGRAMS = \ + wpsfuzzer wksfuzzer wdbfuzzer wrifuzzer docfuzzer 123fuzzer \ + wkfuzzer wqfuzzer + +AM_CXXFLAGS = -I$(top_srcdir)/inc \ + $(REVENGE_GENERATORS_CFLAGS) \ + $(REVENGE_CFLAGS) \ + $(REVENGE_STREAM_CFLAGS) \ + $(DEBUG_CXXFLAGS) + +commonfuzzer_ldadd = \ + $(top_builddir)/src/lib/libwps-@WPS_MAJOR_VERSION@.@[email protected] \ + $(REVENGE_GENERATORS_LIBS) \ + $(REVENGE_LIBS) \ + $(REVENGE_STREAM_LIBS) \ + -lFuzzingEngine + +wpsfuzzer_LDADD = $(commonfuzzer_ldadd) + +wpsfuzzer_SOURCES = \ + wpsfuzzer.cpp + +wksfuzzer_LDADD = $(commonfuzzer_ldadd) + +wksfuzzer_SOURCES = \ + wksfuzzer.cpp + +wdbfuzzer_LDADD = $(commonfuzzer_ldadd) + +wdbfuzzer_SOURCES = \ + wdbfuzzer.cpp + +wrifuzzer_LDADD = $(commonfuzzer_ldadd) + +wrifuzzer_SOURCES = \ + wrifuzzer.cpp + +docfuzzer_LDADD = $(commonfuzzer_ldadd) + +docfuzzer_SOURCES = \ + docfuzzer.cpp + +123fuzzer_LDADD = $(commonfuzzer_ldadd) + +123fuzzer_SOURCES = \ + 123fuzzer.cpp + +wkfuzzer_LDADD = $(commonfuzzer_ldadd) + +wkfuzzer_SOURCES = \ + wkfuzzer.cpp + +wqfuzzer_LDADD = $(commonfuzzer_ldadd) + +wqfuzzer_SOURCES = \ + wqfuzzer.cpp diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libwps-0.4.6/src/fuzz/docfuzzer.cpp new/libwps-0.4.7/src/fuzz/docfuzzer.cpp --- old/libwps-0.4.6/src/fuzz/docfuzzer.cpp 1970-01-01 01:00:00.000000000 +0100 +++ new/libwps-0.4.7/src/fuzz/docfuzzer.cpp 2017-05-11 12:56:20.000000000 +0200 @@ -0,0 +1,37 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */ +/* libwps + * Version: MPL 2.0 / LGPLv2.1+ + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Major Contributor(s): + * Copyright (C) 2017 David Tardon ([email protected]) + * + * For minor contributions see the git repository. + * + * Alternatively, the contents of this file may be used under the terms + * of the GNU Lesser General Public License Version 2.1 or later + * (LGPLv2.1+), in which case the provisions of the LGPLv2.1+ are + * applicable instead of those above. + */ + +#include <cstdint> +#include <cstdlib> + +#include <librevenge-generators/librevenge-generators.h> + +#include <librevenge-stream/librevenge-stream.h> + +#include <libwps/libwps.h> + +extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) +{ + librevenge::RVNGStringStream input(data, size); + librevenge::RVNGRawTextGenerator generator(true); + libwps::WPSDocument::parse(&input, &generator); + return 0; +} + +/* vim:set shiftwidth=4 softtabstop=4 noexpandtab: */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libwps-0.4.6/src/fuzz/wdbfuzzer.cpp new/libwps-0.4.7/src/fuzz/wdbfuzzer.cpp --- old/libwps-0.4.6/src/fuzz/wdbfuzzer.cpp 1970-01-01 01:00:00.000000000 +0100 +++ new/libwps-0.4.7/src/fuzz/wdbfuzzer.cpp 2017-05-11 12:56:20.000000000 +0200 @@ -0,0 +1,37 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */ +/* libwps + * Version: MPL 2.0 / LGPLv2.1+ + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Major Contributor(s): + * Copyright (C) 2017 David Tardon ([email protected]) + * + * For minor contributions see the git repository. + * + * Alternatively, the contents of this file may be used under the terms + * of the GNU Lesser General Public License Version 2.1 or later + * (LGPLv2.1+), in which case the provisions of the LGPLv2.1+ are + * applicable instead of those above. + */ + +#include <cstdint> +#include <cstdlib> + +#include <librevenge-generators/librevenge-generators.h> + +#include <librevenge-stream/librevenge-stream.h> + +#include <libwps/libwps.h> + +extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) +{ + librevenge::RVNGStringStream input(data, size); + librevenge::RVNGRawSpreadsheetGenerator generator(true); + libwps::WPSDocument::parse(&input, &generator); + return 0; +} + +/* vim:set shiftwidth=4 softtabstop=4 noexpandtab: */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libwps-0.4.6/src/fuzz/wkfuzzer.cpp new/libwps-0.4.7/src/fuzz/wkfuzzer.cpp --- old/libwps-0.4.6/src/fuzz/wkfuzzer.cpp 1970-01-01 01:00:00.000000000 +0100 +++ new/libwps-0.4.7/src/fuzz/wkfuzzer.cpp 2017-05-11 12:56:20.000000000 +0200 @@ -0,0 +1,37 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */ +/* libwps + * Version: MPL 2.0 / LGPLv2.1+ + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Major Contributor(s): + * Copyright (C) 2017 David Tardon ([email protected]) + * + * For minor contributions see the git repository. + * + * Alternatively, the contents of this file may be used under the terms + * of the GNU Lesser General Public License Version 2.1 or later + * (LGPLv2.1+), in which case the provisions of the LGPLv2.1+ are + * applicable instead of those above. + */ + +#include <cstdint> +#include <cstdlib> + +#include <librevenge-generators/librevenge-generators.h> + +#include <librevenge-stream/librevenge-stream.h> + +#include <libwps/libwps.h> + +extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) +{ + librevenge::RVNGStringStream input(data, size); + librevenge::RVNGRawSpreadsheetGenerator generator(true); + libwps::WPSDocument::parse(&input, &generator); + return 0; +} + +/* vim:set shiftwidth=4 softtabstop=4 noexpandtab: */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libwps-0.4.6/src/fuzz/wksfuzzer.cpp new/libwps-0.4.7/src/fuzz/wksfuzzer.cpp --- old/libwps-0.4.6/src/fuzz/wksfuzzer.cpp 1970-01-01 01:00:00.000000000 +0100 +++ new/libwps-0.4.7/src/fuzz/wksfuzzer.cpp 2017-05-11 12:56:20.000000000 +0200 @@ -0,0 +1,37 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */ +/* libwps + * Version: MPL 2.0 / LGPLv2.1+ + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Major Contributor(s): + * Copyright (C) 2017 David Tardon ([email protected]) + * + * For minor contributions see the git repository. + * + * Alternatively, the contents of this file may be used under the terms + * of the GNU Lesser General Public License Version 2.1 or later + * (LGPLv2.1+), in which case the provisions of the LGPLv2.1+ are + * applicable instead of those above. + */ + +#include <cstdint> +#include <cstdlib> + +#include <librevenge-generators/librevenge-generators.h> + +#include <librevenge-stream/librevenge-stream.h> + +#include <libwps/libwps.h> + +extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) +{ + librevenge::RVNGStringStream input(data, size); + librevenge::RVNGRawSpreadsheetGenerator generator(true); + libwps::WPSDocument::parse(&input, &generator); + return 0; +} + +/* vim:set shiftwidth=4 softtabstop=4 noexpandtab: */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libwps-0.4.6/src/fuzz/wpsfuzzer.cpp new/libwps-0.4.7/src/fuzz/wpsfuzzer.cpp --- old/libwps-0.4.6/src/fuzz/wpsfuzzer.cpp 1970-01-01 01:00:00.000000000 +0100 +++ new/libwps-0.4.7/src/fuzz/wpsfuzzer.cpp 2017-04-02 11:41:38.000000000 +0200 @@ -0,0 +1,39 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */ +/* libwps + * Version: MPL 2.0 / LGPLv2.1+ + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Major Contributor(s): + * Copyright (C) 2006, 2007 Andrew Ziem + * Copyright (C) 2004 Marc Maurer ([email protected]) + * Copyright (C) 2004-2006 Fridrich Strba ([email protected]) + * + * For minor contributions see the git repository. + * + * Alternatively, the contents of this file may be used under the terms + * of the GNU Lesser General Public License Version 2.1 or later + * (LGPLv2.1+), in which case the provisions of the LGPLv2.1+ are + * applicable instead of those above. + */ + +#include <cstdint> +#include <cstdlib> + +#include <librevenge-generators/librevenge-generators.h> + +#include <librevenge-stream/librevenge-stream.h> + +#include <libwps/libwps.h> + +extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) +{ + librevenge::RVNGStringStream input(data, size); + librevenge::RVNGRawTextGenerator generator(true); + libwps::WPSDocument::parse(&input, &generator); + return 0; +} + +/* vim:set shiftwidth=4 softtabstop=4 noexpandtab: */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libwps-0.4.6/src/fuzz/wqfuzzer.cpp new/libwps-0.4.7/src/fuzz/wqfuzzer.cpp --- old/libwps-0.4.6/src/fuzz/wqfuzzer.cpp 1970-01-01 01:00:00.000000000 +0100 +++ new/libwps-0.4.7/src/fuzz/wqfuzzer.cpp 2017-05-11 12:56:20.000000000 +0200 @@ -0,0 +1,37 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */ +/* libwps + * Version: MPL 2.0 / LGPLv2.1+ + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Major Contributor(s): + * Copyright (C) 2017 David Tardon ([email protected]) + * + * For minor contributions see the git repository. + * + * Alternatively, the contents of this file may be used under the terms + * of the GNU Lesser General Public License Version 2.1 or later + * (LGPLv2.1+), in which case the provisions of the LGPLv2.1+ are + * applicable instead of those above. + */ + +#include <cstdint> +#include <cstdlib> + +#include <librevenge-generators/librevenge-generators.h> + +#include <librevenge-stream/librevenge-stream.h> + +#include <libwps/libwps.h> + +extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) +{ + librevenge::RVNGStringStream input(data, size); + librevenge::RVNGRawSpreadsheetGenerator generator(true); + libwps::WPSDocument::parse(&input, &generator); + return 0; +} + +/* vim:set shiftwidth=4 softtabstop=4 noexpandtab: */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libwps-0.4.6/src/fuzz/wrifuzzer.cpp new/libwps-0.4.7/src/fuzz/wrifuzzer.cpp --- old/libwps-0.4.6/src/fuzz/wrifuzzer.cpp 1970-01-01 01:00:00.000000000 +0100 +++ new/libwps-0.4.7/src/fuzz/wrifuzzer.cpp 2017-05-11 12:56:20.000000000 +0200 @@ -0,0 +1,37 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */ +/* libwps + * Version: MPL 2.0 / LGPLv2.1+ + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Major Contributor(s): + * Copyright (C) 2017 David Tardon ([email protected]) + * + * For minor contributions see the git repository. + * + * Alternatively, the contents of this file may be used under the terms + * of the GNU Lesser General Public License Version 2.1 or later + * (LGPLv2.1+), in which case the provisions of the LGPLv2.1+ are + * applicable instead of those above. + */ + +#include <cstdint> +#include <cstdlib> + +#include <librevenge-generators/librevenge-generators.h> + +#include <librevenge-stream/librevenge-stream.h> + +#include <libwps/libwps.h> + +extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) +{ + librevenge::RVNGStringStream input(data, size); + librevenge::RVNGRawTextGenerator generator(true); + libwps::WPSDocument::parse(&input, &generator); + return 0; +} + +/* vim:set shiftwidth=4 softtabstop=4 noexpandtab: */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libwps-0.4.6/src/lib/Lotus.cpp new/libwps-0.4.7/src/lib/Lotus.cpp --- old/libwps-0.4.6/src/lib/Lotus.cpp 2017-03-03 15:38:23.000000000 +0100 +++ new/libwps-0.4.7/src/lib/Lotus.cpp 2017-05-11 12:56:20.000000000 +0200 @@ -198,7 +198,7 @@ s << "[F" << i << "]"; if (m_actualLevels[i][0]==m_actualLevels[i][1]) s << "_"; - else if (m_actualLevels[i][0]+1==m_actualLevels[i][1]) + else if (m_actualLevels[i][0]==m_actualLevels[i][1]-1) s << m_actualLevels[i][0]; else s << m_actualLevels[i][0] << "x" << m_actualLevels[i][1]-1; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libwps-0.4.6/src/lib/QuattroSpreadsheet.cpp new/libwps-0.4.7/src/lib/QuattroSpreadsheet.cpp --- old/libwps-0.4.6/src/lib/QuattroSpreadsheet.cpp 2017-03-03 13:06:51.000000000 +0100 +++ new/libwps-0.4.7/src/lib/QuattroSpreadsheet.cpp 2017-05-20 10:13:00.000000000 +0200 @@ -440,7 +440,7 @@ struct State { //! constructor - State() : m_eof(-1), m_version(-1), m_hasLICSCharacters(-1), m_styleManager(), m_spreadsheetList(), m_spreadsheetStack() + State() : m_eof(-1), m_version(-1), m_maxDimension(0,0,0), m_hasLICSCharacters(-1), m_styleManager(), m_spreadsheetList(), m_spreadsheetStack() { pushNewSheet(shared_ptr<Spreadsheet>(new Spreadsheet(Spreadsheet::T_Spreadsheet, 0))); } @@ -506,6 +506,8 @@ long m_eof; //! the file version int m_version; + //! the maximum col, row, sheet + WPSVec3i m_maxDimension; //! int to code if the file has LICS characters:-1 means unknown, 0 means no, 1 means yes int m_hasLICSCharacters; //! the style manager @@ -579,13 +581,14 @@ return false; } long sz = libwps::readU16(m_input); - if (sz < 8) + int const vers=version(); + if (sz < (vers>=2 ? 12 : 8)) { WPS_DEBUG_MSG(("QuattroSpreadsheet::readSheetSize: block is too short\n")); return false; } f << "Entries(SheetSize):"; - for (int i = 0; i < 2; i++) // always 2 zero ? + for (int i = 0; i < (vers>=2 ? 3 : 2); i++) // always 2 zero ? { int val = libwps::read16(m_input); if (!val) continue; @@ -595,12 +598,15 @@ f << "nCols=" << nCol << ","; int nRow = libwps::read16(m_input); f << "nRow=" << nRow << ","; + int nSheet = vers<=1 ? 0 : libwps::read16(m_input); + if (nSheet>0) + f << "nSheet=" << nSheet << ","; + m_state->m_maxDimension=WPSVec3i(nCol,nRow,nSheet); ascii().addPos(pos); ascii().addNote(f.str().c_str()); // empty spreadsheet if (nRow==-1 && nCol==0) return true; if (nRow < 0 || nCol <= 0) return false; - m_state->getActualSheet().setColumnWidth(nCol-1); return true; @@ -1296,9 +1302,11 @@ break; } style.m_fileFormat=(int) libwps::readU8(m_input); - int dim[2]; - for (int i=0; i<2; ++i) dim[i]=(int) libwps::read16(m_input); - if (dim[0]||dim[1]) f << "dim=" << Vec2i(dim[0],dim[1]) << ","; + for (int i=0; i<3; ++i) + { + val=(int) libwps::read8(m_input); + if (val) f << "f" << i+2 << "=" << val << ","; + } style.m_extra=f.str(); m_state->m_styleManager.add(id, style); @@ -1812,7 +1820,6 @@ if (endPos-pos-2 != sz) return false; std::vector<WKSContentListener::FormulaInstruction> listCellsPos; - size_t actCellId=0; int fieldPos[2]= {0,sz}; for (int i=0; i<2; ++i) { @@ -1825,6 +1832,7 @@ error="###fieldPos"; return false; } + int NSingle=0; if (fieldPos[0]!=sz) { m_input->seek(pos+2+fieldPos[0], librevenge::RVNG_SEEK_SET); @@ -1832,6 +1840,7 @@ if (vers==1) { int N=(int)(sz-fieldPos[0])/4; + NSingle=(int)(fieldPos[1]-fieldPos[0])/4; for (int i=0; i<N; ++i) { WKSContentListener::FormulaInstruction cell; @@ -1887,6 +1896,7 @@ std::stringstream f; std::vector<std::vector<WKSContentListener::FormulaInstruction> > stack; bool ok = true; + size_t actCellId=0, actDualCellId=size_t(NSingle); while (long(m_input->tell()) != endPos) { double val; @@ -1935,19 +1945,19 @@ instr=listCellsPos[actCellId++]; break; } - if (actCellId+1>=listCellsPos.size()) + if (actDualCellId+1>=listCellsPos.size()) { f.str(""); - f << "###unknListCell" << actCellId; + f << "###unknListCell" << actDualCellId; error=f.str(); ok = false; break; } - instr=listCellsPos[actCellId++]; + instr=listCellsPos[actDualCellId++]; instr.m_type=WKSContentListener::FormulaInstruction::F_CellList; - instr.m_position[1]=listCellsPos[actCellId].m_position[0]; - instr.m_positionRelative[1]=listCellsPos[actCellId].m_positionRelative[0]; - ++actCellId; + instr.m_position[1]=listCellsPos[actDualCellId].m_position[0]; + instr.m_positionRelative[1]=listCellsPos[actDualCellId].m_positionRelative[0]; + ++actDualCellId; break; case 0x5: instr.m_type=WKSContentListener::FormulaInstruction::F_Long; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libwps-0.4.6/src/lib/WKS4Spreadsheet.cpp new/libwps-0.4.7/src/lib/WKS4Spreadsheet.cpp --- old/libwps-0.4.6/src/lib/WKS4Spreadsheet.cpp 2017-03-03 13:07:30.000000000 +0100 +++ new/libwps-0.4.7/src/lib/WKS4Spreadsheet.cpp 2017-07-03 09:26:14.000000000 +0200 @@ -821,7 +821,7 @@ break; case 5: // center arround cell f << ",center[between cell]"; - // fail through expected + WPS_FALLTHROUGH; case 2: style.setHAlignement(WPSCell::HALIGN_CENTER); break; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libwps-0.4.6/src/lib/WKSContentListener.cpp new/libwps-0.4.7/src/lib/WKSContentListener.cpp --- old/libwps-0.4.6/src/lib/WKSContentListener.cpp 2017-02-23 10:33:23.000000000 +0100 +++ new/libwps-0.4.7/src/lib/WKSContentListener.cpp 2017-07-03 09:26:14.000000000 +0200 @@ -775,7 +775,7 @@ { case WPSPosition::YFull: propList.insert("svg:height", double(h), unit); - // fall-through intended + WPS_FALLTHROUGH; case WPSPosition::YTop: if (origin[1] < 0.0 || origin[1] > 0.0) { @@ -819,7 +819,7 @@ { case WPSPosition::XFull: propList.insert("svg:width", double(w), unit); - // fallthrough intended + WPS_FALLTHROUGH; case WPSPosition::XLeft: if (origin[0] < 0.0 || origin[0] > 0.0) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libwps-0.4.6/src/lib/WPS4.cpp new/libwps-0.4.7/src/lib/WPS4.cpp --- old/libwps-0.4.6/src/lib/WPS4.cpp 2016-10-01 14:33:30.000000000 +0200 +++ new/libwps-0.4.7/src/lib/WPS4.cpp 2017-07-03 09:26:14.000000000 +0200 @@ -585,7 +585,7 @@ { case 0xda1: apCreator = 2; - // fall-through intended + WPS_FALLTHROUGH; case 0: case 1: worksVersion = 1; @@ -752,7 +752,7 @@ } int num = libwps::readU16(input); - int sz = libwps::readU16(input); + long sz = libwps::readU16(input); begP = (long) libwps::readU32(input); if (begP) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libwps-0.4.6/src/lib/WPS4Text.cpp new/libwps-0.4.7/src/lib/WPS4Text.cpp --- old/libwps-0.4.6/src/lib/WPS4Text.cpp 2016-12-21 13:32:31.000000000 +0100 +++ new/libwps-0.4.7/src/lib/WPS4Text.cpp 2017-07-03 09:26:14.000000000 +0200 @@ -910,6 +910,7 @@ } m_input->seek(-1, librevenge::RVNG_SEEK_CUR); } + WPS_FALLTHROUGH; default: if (version()<=2) { @@ -1294,7 +1295,7 @@ } // PLC Data: default parser -bool WPS4Text::defDataParser(long , long , int , long endPos, std::string &mess) +bool WPS4Text::defDataParser(long, long, int, long endPos, std::string &mess) { mess = ""; libwps::DebugStream f; @@ -1593,7 +1594,7 @@ val = libwps::readU16(m_input); // always 4 if (val != 4) f << "g1=" << val << ","; } - // fall-through intended + WPS_FALLTHROUGH; case 0x40: // spreadsheet range case 0x01: // char ? { @@ -1999,7 +2000,7 @@ break; case 0x13: // seems another way to define the left margin f << "#left,"; - // fall-through intended + WPS_FALLTHROUGH; case 0x12: pp.m_margins[1] = arg/1440.; break; @@ -2565,7 +2566,7 @@ break; default: WPS_DEBUG_MSG(("WPS4Text:readPLC: unexpected PLC size\n")); - // fallthrough intended + WPS_FALLTHROUGH; case 0: plc.m_value = 0; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libwps-0.4.6/src/lib/WPS8Table.cpp new/libwps-0.4.7/src/lib/WPS8Table.cpp --- old/libwps-0.4.6/src/lib/WPS8Table.cpp 2017-01-02 10:08:11.000000000 +0100 +++ new/libwps-0.4.7/src/lib/WPS8Table.cpp 2017-07-03 09:26:15.000000000 +0200 @@ -605,7 +605,7 @@ break; // normal case 0xFF: // also unset, diff with value = 1 ? f2 << "#f" << dt.id() << "=" << std::hex << dt.m_value << std::dec << ","; - // fall-through intended + WPS_FALLTHROUGH; case 1: cell->setVerticalSet(false); break; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libwps-0.4.6/src/lib/WPS8Text.cpp new/libwps-0.4.7/src/lib/WPS8Text.cpp --- old/libwps-0.4.6/src/lib/WPS8Text.cpp 2016-12-26 09:08:53.000000000 +0100 +++ new/libwps-0.4.7/src/lib/WPS8Text.cpp 2017-05-11 12:56:20.000000000 +0200 @@ -22,6 +22,7 @@ #include <stdlib.h> #include <string.h> +#include <limits> #include <map> #include "libwps_internal.h" @@ -1338,7 +1339,7 @@ // plc: default, strs //////////////////////////////////////////////////////////// bool WPS8Text::defDataParser -(long , long , int , WPS8Struct::FileData const &data, std::string &mess) +(long, long, int, WPS8Struct::FileData const &data, std::string &mess) { mess = ""; libwps::DebugStream f; @@ -1819,7 +1820,7 @@ } f << "ptr=("; - if (pos+20+4*N > endPage) + if (N < 0 || N > std::numeric_limits<int>::max()/4 || 4*N > endPage-pos+20) { input->seek(pos, librevenge::RVNG_SEEK_SET); return false; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libwps-0.4.6/src/lib/WPS8Text.h new/libwps-0.4.7/src/lib/WPS8Text.h --- old/libwps-0.4.6/src/lib/WPS8Text.h 2015-11-15 19:15:35.000000000 +0100 +++ new/libwps-0.4.7/src/lib/WPS8Text.h 2017-04-02 11:41:38.000000000 +0200 @@ -166,7 +166,7 @@ EndDataParser endParser = 0L); //! default parser bool defDataParser - (long , long , int , WPS8Struct::FileData const &data, std::string &mess); + (long, long, int, WPS8Struct::FileData const &data, std::string &mess); //! the text zones parser: STRS bool textZonesDataParser(long bot, long eot, int nId, WPS8Struct::FileData const &data, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libwps-0.4.6/src/lib/WPS8TextStyle.cpp new/libwps-0.4.7/src/lib/WPS8TextStyle.cpp --- old/libwps-0.4.6/src/lib/WPS8TextStyle.cpp 2017-01-02 10:08:11.000000000 +0100 +++ new/libwps-0.4.7/src/lib/WPS8TextStyle.cpp 2017-07-03 09:26:15.000000000 +0200 @@ -671,6 +671,7 @@ { case 2: // not frequent: only found one time f << "#type[bullet]=2,"; + WPS_FALLTHROUGH; case 1: // the normal case para.m_listLevelIndex = 1; para.m_listLevel.m_type = libwps::BULLET; @@ -756,7 +757,7 @@ break; default: f << "#bullet/type=" << type << ","; - // fall-through intended + WPS_FALLTHROUGH; case 2: para.m_listLevel.m_type = libwps::ARABIC; break; @@ -1001,6 +1002,7 @@ f << "extra[tabs]=[" << data.m_recursData[ch] << "],"; } } + WPS_FALLTHROUGH; // checkme case 0x34: // interline line spacing 8*152400 -> normal, sinon *2 { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libwps-0.4.6/src/lib/WPSCell.cpp new/libwps-0.4.7/src/lib/WPSCell.cpp --- old/libwps-0.4.6/src/lib/WPSCell.cpp 2017-02-23 19:17:41.000000000 +0100 +++ new/libwps-0.4.7/src/lib/WPSCell.cpp 2017-07-03 09:26:15.000000000 +0200 @@ -64,12 +64,14 @@ { case 'Y': list.insert("number:style", "long"); + WPS_FALLTHROUGH; case 'y': list.insert("librevenge:value-type", "year"); propVect.append(list); break; case 'B': list.insert("number:style", "long"); + WPS_FALLTHROUGH; case 'b': case 'h': list.insert("librevenge:value-type", "month"); @@ -82,13 +84,14 @@ break; case 'e': list.insert("number:style", "long"); - // fall-through intended + WPS_FALLTHROUGH; case 'd': list.insert("librevenge:value-type", "day"); propVect.append(list); break; case 'A': list.insert("number:style", "long"); + WPS_FALLTHROUGH; case 'a': list.insert("librevenge:value-type", "day-of-week"); propVect.append(list); @@ -96,7 +99,7 @@ case 'H': list.insert("number:style", "long"); - // fall-through intended + WPS_FALLTHROUGH; case 'I': list.insert("librevenge:value-type", "hours"); propVect.append(list); @@ -286,11 +289,11 @@ { case 5: // thousand propList.insert("number:grouping", true); - // fall-through intended + WPS_FALLTHROUGH; case 0: // default if (m_subFormat==0) propList.remove("number:decimal-places"); - // fall-through intended + WPS_FALLTHROUGH; case 1: // decimal propList.insert("librevenge:value-type", "number"); break; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libwps-0.4.6/src/lib/WPSContentListener.cpp new/libwps-0.4.7/src/lib/WPSContentListener.cpp --- old/libwps-0.4.6/src/lib/WPSContentListener.cpp 2016-12-21 10:54:36.000000000 +0100 +++ new/libwps-0.4.7/src/lib/WPSContentListener.cpp 2017-07-03 09:26:15.000000000 +0200 @@ -1183,7 +1183,7 @@ default: WPS_DEBUG_MSG(("WPSContentListener::openGroup: UNKNOWN position, insert as char position\n")); #endif - // fallthrough intended + WPS_FALLTHROUGH; case WPSPosition::CharBaseLine: case WPSPosition::Char: if (m_ps->m_isSpanOpened) @@ -1372,7 +1372,7 @@ { case WPSPosition::YFull: propList.insert("svg:height", double(h), unit); - // fall-through intended + WPS_FALLTHROUGH; case WPSPosition::YTop: if (origin[1] < 0.0 || origin[1] > 0.0) { @@ -1416,7 +1416,7 @@ { case WPSPosition::XFull: propList.insert("svg:width", double(w), unit); - // fallthrough intended + WPS_FALLTHROUGH; case WPSPosition::XLeft: if (origin[0] < 0.0 || origin[0] > 0.0) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libwps-0.4.6/src/lib/WPSDebug.h new/libwps-0.4.7/src/lib/WPSDebug.h --- old/libwps-0.4.6/src/lib/WPSDebug.h 2015-11-15 19:10:40.000000000 +0100 +++ new/libwps-0.4.7/src/lib/WPSDebug.h 2017-04-02 11:41:38.000000000 +0200 @@ -212,7 +212,7 @@ static void reset() { } - static void skipZone(long , long) {} + static void skipZone(long, long) {} }; } # endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libwps-0.4.6/src/lib/WPSGraphicShape.cpp new/libwps-0.4.7/src/lib/WPSGraphicShape.cpp --- old/libwps-0.4.6/src/lib/WPSGraphicShape.cpp 2016-09-27 19:33:01.000000000 +0200 +++ new/libwps-0.4.7/src/lib/WPSGraphicShape.cpp 2017-07-03 09:26:15.000000000 +0200 @@ -631,6 +631,7 @@ break; } } + WPS_FALLTHROUGH; case Arc: case Pie: { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libwps-0.4.6/src/lib/WPSPageSpan.cpp new/libwps-0.4.7/src/lib/WPSPageSpan.cpp --- old/libwps-0.4.6/src/lib/WPSPageSpan.cpp 2016-08-24 10:53:16.000000000 +0200 +++ new/libwps-0.4.7/src/lib/WPSPageSpan.cpp 2017-07-03 09:26:15.000000000 +0200 @@ -114,6 +114,7 @@ { case NEVER: _removeHeaderFooter(type, ALL); + WPS_FALLTHROUGH; case FIRST: case ALL: _removeHeaderFooter(type, ODD); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libwps-0.4.6/src/lib/libwps_internal.cpp new/libwps-0.4.7/src/lib/libwps_internal.cpp --- old/libwps-0.4.6/src/lib/libwps_internal.cpp 2017-03-02 17:51:02.000000000 +0100 +++ new/libwps-0.4.7/src/lib/libwps_internal.cpp 2017-07-02 16:52:37.000000000 +0200 @@ -488,6 +488,7 @@ struct tm timeinfo; if (localtime_r(&now, &timeinfo)) { +#pragma GCC diagnostic ignored "-Wformat-nonliteral" char buf[256]; strftime(buf, 256, format.c_str(), &timeinfo); res=librevenge::RVNGString(buf); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libwps-0.4.6/src/lib/libwps_internal.h new/libwps-0.4.7/src/lib/libwps_internal.h --- old/libwps-0.4.6/src/lib/libwps_internal.h 2017-03-01 21:10:50.000000000 +0100 +++ new/libwps-0.4.7/src/lib/libwps_internal.h 2017-07-03 09:52:38.000000000 +0200 @@ -83,6 +83,20 @@ void operator()(T *) {} }; +/** fall through attributes */ +#define WPS_FALLTHROUGH +#if defined(__clang__) +# if defined(__has_cpp_attribute) && __has_cpp_attribute(clang::fallthrough) +# undef WPS_FALLTHROUGH +# define WPS_FALLTHROUGH [[clang::fallthrough]] +# endif +#elif defined(__GNUC__) +# if __GNUC__>=7 +# undef WPS_FALLTHROUGH +# define WPS_FALLTHROUGH __attribute__ ((fallthrough)) +# endif +#endif + // basic classes and autoptr /** shared pointer to librevenge::RVNGInputStream */ typedef shared_ptr<librevenge::RVNGInputStream> RVNGInputStreamPtr; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libwps-0.4.6/src/lib/libwps_tools_win.cpp new/libwps-0.4.7/src/lib/libwps_tools_win.cpp --- old/libwps-0.4.6/src/lib/libwps_tools_win.cpp 2017-03-06 13:50:21.000000000 +0100 +++ new/libwps-0.4.7/src/lib/libwps_tools_win.cpp 2017-07-03 09:26:14.000000000 +0200 @@ -186,6 +186,7 @@ default: WPS_DEBUG_MSG(("libwps_tools_win::Font::getTypeForOEM: find unknown oem %d\n", oem)); + WPS_FALLTHROUGH; case 0: return UNKNOWN; }
