[Libreoffice-commits] libvisio.git: 2 commits - configure.ac src/fuzz src/Makefile.am

David Tardon dtardon at redhat.com
Thu Mar 30 18:16:11 UTC 2017


 configure.ac           |   36 +++++++++++++++++++++++++-----------
 src/Makefile.am        |    4 ++++
 src/fuzz/.gitignore    |    8 ++++++++
 src/fuzz/Makefile.am   |   17 +++++++++++++++++
 src/fuzz/vsdfuzzer.cpp |   27 +++++++++++++++++++++++++++
 5 files changed, 81 insertions(+), 11 deletions(-)

New commits:
commit c086308b7949770c0eed3e23c002f682109979be
Author: David Tardon <dtardon at redhat.com>
Date:   Thu Mar 30 20:14:20 2017 +0200

    refactor tests for -stream and -generators
    
    Change-Id: I18773ac08b926e1c4f3e87e9dd0c1bda1a1a2665

diff --git a/configure.ac b/configure.ac
index 5a77a46..b7950ad 100644
--- a/configure.ac
+++ b/configure.ac
@@ -99,6 +99,8 @@ AC_ARG_ENABLE([tools],
 	[enable_tools="$enableval"],
 	[enable_tools=yes]
 )
+AM_CONDITIONAL([BUILD_TOOLS], [test "x$enable_tools" = "xyes"])
+AS_IF([test "x$enable_tools" = "xyes"], [need_stream=yes; need_generators=yes])
 
 # =======
 # Fuzzers
@@ -109,6 +111,7 @@ AC_ARG_ENABLE([fuzzers],
 	[enable_fuzzers=no]
 )
 AM_CONDITIONAL(BUILD_FUZZERS, [test "x$enable_fuzzers" = "xyes"])
+AS_IF([test "x$enable_fuzzers" = "xyes"], [need_stream=yes; need_generators=yes])
 
 # ==========
 # Unit tests
@@ -119,7 +122,15 @@ AC_ARG_ENABLE([tests],
     [enable_tests=yes]
 )
 
-AS_IF([test "x$enable_tools" = "xyes" -o "x$enable_tests" = "xyes" -o "x$enable_fuzzers" = "xyes"], [
+AS_IF([test "x$enable_tests" = "xyes"], [
+    PKG_CHECK_MODULES([CPPUNIT], [cppunit])
+], [])
+AC_SUBST([CPPUNIT_CFLAGS])
+AC_SUBST([CPPUNIT_LIBS])
+AM_CONDITIONAL([ENABLE_TESTS], [test "x$enable_tests" = "xyes"])
+AS_IF([test "x$enable_tests" = "xyes"], [need_generators=yes])
+
+AS_IF([test "x$need_stream" = "xyes"], [
 	PKG_CHECK_MODULES([REVENGE_STREAM],[
 		librevenge-stream-0.0
 	])
@@ -127,13 +138,7 @@ AS_IF([test "x$enable_tools" = "xyes" -o "x$enable_tests" = "xyes" -o "x$enable_
 AC_SUBST([REVENGE_STREAM_CFLAGS])
 AC_SUBST([REVENGE_STREAM_LIBS])
 
-AS_IF([test "x$enable_tests" = "xyes"], [
-    PKG_CHECK_MODULES([CPPUNIT], [cppunit])
-], [])
-AC_SUBST([CPPUNIT_CFLAGS])
-AC_SUBST([CPPUNIT_LIBS])
-
-AS_IF([test "x$enable_tools" = "xyes" -o "x$enable_fuzzers" = "xyes"], [
+AS_IF([test "x$need_generators" = "xyes"], [
 	PKG_CHECK_MODULES([REVENGE_GENERATORS],[
 		librevenge-generators-0.0
 	])
@@ -141,9 +146,6 @@ AS_IF([test "x$enable_tools" = "xyes" -o "x$enable_fuzzers" = "xyes"], [
 AC_SUBST([REVENGE_GENERATORS_CFLAGS])
 AC_SUBST([REVENGE_GENERATORS_LIBS])
 
-AM_CONDITIONAL([BUILD_TOOLS], [test "x$enable_tools" = "xyes"])
-AM_CONDITIONAL([ENABLE_TESTS], [test "x$enable_tests" = "xyes"])
-
 # =================================
 # Libtool/Version Makefile settings
 # =================================
commit 2f1be67cec55af6fc694ec932a4a3f2c1d671af7
Author: David Tardon <dtardon at redhat.com>
Date:   Thu Mar 30 20:08:34 2017 +0200

    create fuzzing driver for oss-fuzz
    
    Change-Id: I9f778f52de5936f0555ec32d6deea8981dd6dc93

diff --git a/configure.ac b/configure.ac
index 79a65e1..5a77a46 100644
--- a/configure.ac
+++ b/configure.ac
@@ -100,6 +100,16 @@ AC_ARG_ENABLE([tools],
 	[enable_tools=yes]
 )
 
+# =======
+# 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"])
+
 # ==========
 # Unit tests
 # ==========
@@ -109,7 +119,7 @@ AC_ARG_ENABLE([tests],
     [enable_tests=yes]
 )
 
-AS_IF([test "x$enable_tools" = "xyes" -o "x$enable_tests" = "xyes"], [
+AS_IF([test "x$enable_tools" = "xyes" -o "x$enable_tests" = "xyes" -o "x$enable_fuzzers" = "xyes"], [
 	PKG_CHECK_MODULES([REVENGE_STREAM],[
 		librevenge-stream-0.0
 	])
@@ -123,7 +133,7 @@ AS_IF([test "x$enable_tests" = "xyes"], [
 AC_SUBST([CPPUNIT_CFLAGS])
 AC_SUBST([CPPUNIT_LIBS])
 
-AS_IF([test "x$enable_tools" = "xyes"], [
+AS_IF([test "x$enable_tools" = "xyes" -o "x$enable_fuzzers" = "xyes"], [
 	PKG_CHECK_MODULES([REVENGE_GENERATORS],[
 		librevenge-generators-0.0
 	])
@@ -338,6 +348,7 @@ src/conv/svg/vss2xhtml.rc
 src/conv/text/Makefile
 src/conv/text/vsd2text.rc
 src/conv/text/vss2text.rc
+src/fuzz/Makefile
 src/lib/Makefile
 src/lib/libvisio.rc
 src/test/Makefile
@@ -359,6 +370,7 @@ AC_MSG_NOTICE([
 Build configuration:
 	debug:           ${enable_debug}
 	docs:            ${build_docs}
+	fuzzers:         ${enable_fuzzers}
 	tests:           ${enable_tests}
 	tools:           ${enable_tools}
 	werror:          ${enable_werror}
diff --git a/src/Makefile.am b/src/Makefile.am
index c9dad75..a6eb477 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -7,3 +7,7 @@ endif
 if BUILD_TOOLS
 SUBDIRS += conv
 endif
+
+if BUILD_FUZZERS
+SUBDIRS += fuzz
+endif
diff --git a/src/fuzz/.gitignore b/src/fuzz/.gitignore
new file mode 100644
index 0000000..df86dfd
--- /dev/null
+++ b/src/fuzz/.gitignore
@@ -0,0 +1,8 @@
+.deps
+.libs
+*.lo
+*.la
+*.o
+Makefile
+Makefile.in
+*fuzzer
diff --git a/src/fuzz/Makefile.am b/src/fuzz/Makefile.am
new file mode 100644
index 0000000..168b038
--- /dev/null
+++ b/src/fuzz/Makefile.am
@@ -0,0 +1,17 @@
+noinst_PROGRAMS = vsdfuzzer
+
+AM_CXXFLAGS = -I$(top_srcdir)/inc \
+	$(REVENGE_GENERATORS_CFLAGS) \
+	$(REVENGE_CFLAGS) \
+	$(REVENGE_STREAM_CFLAGS) \
+	$(DEBUG_CXXFLAGS)
+
+vsdfuzzer_LDADD = \
+	$(top_builddir)/src/lib/libvisio- at VSD_MAJOR_VERSION@. at VSD_MINOR_VERSION@.la \
+	$(REVENGE_GENERATORS_LIBS) \
+	$(REVENGE_LIBS) \
+	$(REVENGE_STREAM_LIBS) \
+	-lFuzzingEngine
+
+vsdfuzzer_SOURCES = \
+	vsdfuzzer.cpp
diff --git a/src/fuzz/vsdfuzzer.cpp b/src/fuzz/vsdfuzzer.cpp
new file mode 100644
index 0000000..f5b8f7e
--- /dev/null
+++ b/src/fuzz/vsdfuzzer.cpp
@@ -0,0 +1,27 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/*
+ * This file is part of the libvisio project.
+ *
+ * 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/.
+ */
+
+#include <algorithm>
+#include <cstdint>
+
+#include <libvisio/libvisio.h>
+
+#include <librevenge-generators/librevenge-generators.h>
+
+#include <librevenge-stream/librevenge-stream.h>
+
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
+{
+  librevenge::RVNGStringStream input(data, size);
+  librevenge::RVNGRawDrawingGenerator generator(true);
+  libvisio::VisioDocument::parse(&input, &generator);
+  return 0;
+}
+
+/* vim:set shiftwidth=2 softtabstop=2 expandtab: */


More information about the Libreoffice-commits mailing list