summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Sinclair <dsinclair@chromium.org>2017-03-28 12:40:20 -0400
committerChromium commit bot <commit-bot@chromium.org>2017-03-28 16:57:21 +0000
commit8149ae111536d6f7272e676ad4b95b1b194d11b8 (patch)
tree2ad0473ea6d428a93f53136feeeb40f5678a7f92
parent0eb74769c9efbcb94e57f160882ce3309684b2f9 (diff)
downloadpdfium-8149ae111536d6f7272e676ad4b95b1b194d11b8.tar.xz
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>
-rw-r--r--testing/libfuzzer/BUILD.gn2
-rw-r--r--testing/libfuzzer/pdf_fuzzer_init.cc21
2 files changed, 22 insertions, 1 deletions
diff --git a/testing/libfuzzer/BUILD.gn b/testing/libfuzzer/BUILD.gn
index 9ba8e32ba6..d9dc0ee58f 100644
--- a/testing/libfuzzer/BUILD.gn
+++ b/testing/libfuzzer/BUILD.gn
@@ -25,7 +25,7 @@ group("libfuzzer") {
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 0000000000..4b9790c3f8
--- /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();