Add pdfium fuzzing stub for LPM fuzzer
Stub is based off of pdfium_fuzzer.
Bug: chromium:969811
Change-Id: Ic37f1b4619a8fe7ed174e0677201f66a30a84809
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/55392
Reviewed-by: Lei Zhang <thestig@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/testing/fuzzers/BUILD.gn b/testing/fuzzers/BUILD.gn
index 9d2702b..aba2375 100644
--- a/testing/fuzzers/BUILD.gn
+++ b/testing/fuzzers/BUILD.gn
@@ -30,6 +30,7 @@
"pdf_streamparser_fuzzer",
"pdf_xml_fuzzer",
"pdfium_fuzzer",
+ "pdfium_lpm_fuzzer",
]
if (pdf_enable_v8) {
fuzzer_list += [
@@ -538,3 +539,15 @@
]
public_fuzzer = true
}
+
+pdfium_fuzzer("pdfium_lpm_fuzzer") {
+ sources = [
+ "pdfium_lpm_fuzz_stub.cc",
+ "pdfium_lpm_fuzz_stub.h",
+ ]
+ deps = [
+ ":fuzzer_helper",
+ "../../:pdfium_public_headers",
+ ]
+ public_fuzzer = true
+}
diff --git a/testing/fuzzers/pdfium_lpm_fuzz_stub.cc b/testing/fuzzers/pdfium_lpm_fuzz_stub.cc
new file mode 100644
index 0000000..0989005
--- /dev/null
+++ b/testing/fuzzers/pdfium_lpm_fuzz_stub.cc
@@ -0,0 +1,22 @@
+// Copyright 2019 The Chromium 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 <stddef.h>
+#include <stdint.h>
+
+#include "testing/fuzzers/pdfium_fuzzer_helper.h"
+#include "testing/fuzzers/pdfium_lpm_fuzz_stub.h"
+
+class PDFiumLpmFuzzStub : public PDFiumFuzzerHelper {
+ public:
+ PDFiumLpmFuzzStub() = default;
+ ~PDFiumLpmFuzzStub() override = default;
+
+ int GetFormCallbackVersion() const override { return 1; }
+};
+
+void FuzzPdf(const char* pdf, size_t size) {
+ PDFiumLpmFuzzStub fuzz_stub;
+ fuzz_stub.RenderPdf(pdf, size);
+}
diff --git a/testing/fuzzers/pdfium_lpm_fuzz_stub.h b/testing/fuzzers/pdfium_lpm_fuzz_stub.h
new file mode 100644
index 0000000..e5f9416
--- /dev/null
+++ b/testing/fuzzers/pdfium_lpm_fuzz_stub.h
@@ -0,0 +1,14 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef TESTING_FUZZERS_PDFIUM_LPM_FUZZ_STUB_H_
+#define TESTING_FUZZERS_PDFIUM_LPM_FUZZ_STUB_H_
+
+#include "public/fpdfview.h"
+
+// LPM defines LLVMFuzzerTestOneInput, this function should be used by the LPM
+// harness to pass the deserialized proto to PDFium.
+FPDF_EXPORT void FuzzPdf(const char* pdf, size_t size);
+
+#endif // TESTING_FUZZERS_PDFIUM_LPM_FUZZ_STUB_H_