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;
        }


Reply via email to