From 8149ae111536d6f7272e676ad4b95b1b194d11b8 Mon Sep 17 00:00:00 2001 From: Dan Sinclair Date: Tue, 28 Mar 2017 12:40:20 -0400 Subject: 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 Commit-Queue: dsinclair --- testing/libfuzzer/BUILD.gn | 2 +- testing/libfuzzer/pdf_fuzzer_init.cc | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 testing/libfuzzer/pdf_fuzzer_init.cc 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 + +#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(); -- cgit v1.2.3