Init PDFium in fuzzer code
Due to the partition alloc change we need to initialize the PDFium
library in the fuzzers now. This will initialize the needed partitions.
Without this, we fail in various places when attempting to create items
into the partitions
Bug: pdfium:687
Change-Id: I1c40ae3f442cb781cfdb7545b022ee1f4e64e264
Reviewed-on: https://pdfium-review.googlesource.com/3246
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: dsinclair <dsinclair@chromium.org>
diff --git a/testing/libfuzzer/BUILD.gn b/testing/libfuzzer/BUILD.gn
index 9ba8e32..d9dc0ee 100644
--- a/testing/libfuzzer/BUILD.gn
+++ b/testing/libfuzzer/BUILD.gn
@@ -25,7 +25,7 @@
template("pdfium_fuzzer") {
source_set(target_name) {
- sources = invoker.sources
+ sources = invoker.sources + [ "pdf_fuzzer_init.cc" ]
deps = [
"../..:pdfium",
]
diff --git a/testing/libfuzzer/pdf_fuzzer_init.cc b/testing/libfuzzer/pdf_fuzzer_init.cc
new file mode 100644
index 0000000..4b9790c
--- /dev/null
+++ b/testing/libfuzzer/pdf_fuzzer_init.cc
@@ -0,0 +1,21 @@
+// Copyright 2017 The PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include <string.h>
+
+#include "public/fpdfview.h"
+
+// Initialize the library once for all runs of the fuzzer.
+struct TestCase {
+ TestCase() {
+ memset(&config, '\0', sizeof(config));
+ config.version = 2;
+ config.m_pUserFontPaths = nullptr;
+ config.m_pIsolate = nullptr;
+ config.m_v8EmbedderSlot = 0;
+ FPDF_InitLibraryWithConfig(&config);
+ }
+ FPDF_LIBRARY_CONFIG config;
+};
+static TestCase* testCase = new TestCase();