Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(82)

Side by Side Diff: pdf/pdfium/fuzzers/pdfium_fuzzer.cc

Issue 2754103002: Add XFA pdfium fuzzer (Closed)
Patch Set: Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« pdf/pdfium/fuzzers/BUILD.gn ('K') | « pdf/pdfium/fuzzers/BUILD.gn ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // This fuzzer is simplified & cleaned up pdfium/samples/pdfium_test.cc 5 // This fuzzer is simplified & cleaned up pdfium/samples/pdfium_test.cc
6 6
7 #include <assert.h> 7 #include <assert.h>
8 #include <limits.h> 8 #include <limits.h>
9 #include <stddef.h> 9 #include <stddef.h>
10 #include <stdint.h> 10 #include <stdint.h>
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
84 84
85 static void RenderPdf(const char* pBuf, size_t len) { 85 static void RenderPdf(const char* pBuf, size_t len) {
86 IPDF_JSPLATFORM platform_callbacks; 86 IPDF_JSPLATFORM platform_callbacks;
87 memset(&platform_callbacks, '\0', sizeof(platform_callbacks)); 87 memset(&platform_callbacks, '\0', sizeof(platform_callbacks));
88 platform_callbacks.version = 3; 88 platform_callbacks.version = 3;
89 platform_callbacks.app_alert = ExampleAppAlert; 89 platform_callbacks.app_alert = ExampleAppAlert;
90 platform_callbacks.Doc_gotoPage = ExampleDocGotoPage; 90 platform_callbacks.Doc_gotoPage = ExampleDocGotoPage;
91 91
92 FPDF_FORMFILLINFO form_callbacks; 92 FPDF_FORMFILLINFO form_callbacks;
93 memset(&form_callbacks, '\0', sizeof(form_callbacks)); 93 memset(&form_callbacks, '\0', sizeof(form_callbacks));
94 #ifdef PDF_ENABLE_XFA
95 form_callbacks.version = 2;
96 #else // PDF_ENABLE_XFA
94 form_callbacks.version = 1; 97 form_callbacks.version = 1;
98 #endif // PDF_ENABLE_XFA
95 form_callbacks.m_pJsPlatform = &platform_callbacks; 99 form_callbacks.m_pJsPlatform = &platform_callbacks;
96 100
97 TestLoader loader(pBuf, len); 101 TestLoader loader(pBuf, len);
98 FPDF_FILEACCESS file_access; 102 FPDF_FILEACCESS file_access;
99 memset(&file_access, '\0', sizeof(file_access)); 103 memset(&file_access, '\0', sizeof(file_access));
100 file_access.m_FileLen = static_cast<unsigned long>(len); 104 file_access.m_FileLen = static_cast<unsigned long>(len);
101 file_access.m_GetBlock = TestLoader::GetBlock; 105 file_access.m_GetBlock = TestLoader::GetBlock;
102 file_access.m_Param = &loader; 106 file_access.m_Param = &loader;
103 107
104 FX_FILEAVAIL file_avail; 108 FX_FILEAVAIL file_avail;
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
136 } 140 }
137 141
138 if (!doc) { 142 if (!doc) {
139 FPDFAvail_Destroy(pdf_avail); 143 FPDFAvail_Destroy(pdf_avail);
140 return; 144 return;
141 } 145 }
142 146
143 (void)FPDF_GetDocPermissions(doc); 147 (void)FPDF_GetDocPermissions(doc);
144 148
145 FPDF_FORMHANDLE form = FPDFDOC_InitFormFillEnvironment(doc, &form_callbacks); 149 FPDF_FORMHANDLE form = FPDFDOC_InitFormFillEnvironment(doc, &form_callbacks);
150
151 #ifdef PDF_ENABLE_XFA
152 int doc_type = DOCTYPE_PDF;
153 if (FPDF_HasXFAField(doc, &doc_type) && doc_type != DOCTYPE_PDF)
154 FPDF_LoadXFA(doc);
155 #endif // PDF_ENABLE_XFA
156
146 FPDF_SetFormFieldHighlightColor(form, 0, 0xFFE4DD); 157 FPDF_SetFormFieldHighlightColor(form, 0, 0xFFE4DD);
147 FPDF_SetFormFieldHighlightAlpha(form, 100); 158 FPDF_SetFormFieldHighlightAlpha(form, 100);
148 159
149 FORM_DoDocumentJSAction(form); 160 FORM_DoDocumentJSAction(form);
150 FORM_DoDocumentOpenAction(form); 161 FORM_DoDocumentOpenAction(form);
151 162
152 int page_count = FPDF_GetPageCount(doc); 163 int page_count = FPDF_GetPageCount(doc);
153 164
154 for (int i = 0; i < page_count; ++i) { 165 for (int i = 0; i < page_count; ++i) {
155 if (bIsLinearized) { 166 if (bIsLinearized) {
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
213 FPDF_LIBRARY_CONFIG config; 224 FPDF_LIBRARY_CONFIG config;
214 UNSUPPORT_INFO unsupport_info; 225 UNSUPPORT_INFO unsupport_info;
215 }; 226 };
216 227
217 static TestCase* testCase = new TestCase(); 228 static TestCase* testCase = new TestCase();
218 229
219 extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { 230 extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
220 RenderPdf(reinterpret_cast<const char*>(data), size); 231 RenderPdf(reinterpret_cast<const char*>(data), size);
221 return 0; 232 return 0;
222 } 233 }
OLDNEW
« pdf/pdfium/fuzzers/BUILD.gn ('K') | « pdf/pdfium/fuzzers/BUILD.gn ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698