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

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

Issue 1991103003: Fix memory leaks in the PDFium fuzzer. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 7 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
« no previous file with comments | « no previous file | 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 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
48 FPDF_BOOL Is_Data_Avail(FX_FILEAVAIL* pThis, size_t offset, size_t size) { 48 FPDF_BOOL Is_Data_Avail(FX_FILEAVAIL* pThis, size_t offset, size_t size) {
49 return true; 49 return true;
50 } 50 }
51 51
52 static void Add_Segment(FX_DOWNLOADHINTS* pThis, size_t offset, size_t size) {} 52 static void Add_Segment(FX_DOWNLOADHINTS* pThis, size_t offset, size_t size) {}
53 53
54 static bool RenderPage(const FPDF_DOCUMENT& doc, 54 static bool RenderPage(const FPDF_DOCUMENT& doc,
55 const FPDF_FORMHANDLE& form, 55 const FPDF_FORMHANDLE& form,
56 const int page_index) { 56 const int page_index) {
57 FPDF_PAGE page = FPDF_LoadPage(doc, page_index); 57 FPDF_PAGE page = FPDF_LoadPage(doc, page_index);
58 if (!page) { 58 if (!page)
59 return false; 59 return false;
60 } 60
61 FPDF_TEXTPAGE text_page = FPDFText_LoadPage(page); 61 FPDF_TEXTPAGE text_page = FPDFText_LoadPage(page);
62 FORM_OnAfterLoadPage(page, form); 62 FORM_OnAfterLoadPage(page, form);
63 FORM_DoPageAAction(page, form, FPDFPAGE_AACTION_OPEN); 63 FORM_DoPageAAction(page, form, FPDFPAGE_AACTION_OPEN);
64 64
65 double scale = 1.0; 65 const double scale = 1.0;
66 int width = static_cast<int>(FPDF_GetPageWidth(page) * scale); 66 int width = static_cast<int>(FPDF_GetPageWidth(page) * scale);
67 int height = static_cast<int>(FPDF_GetPageHeight(page) * scale); 67 int height = static_cast<int>(FPDF_GetPageHeight(page) * scale);
68 68
69 FPDF_BITMAP bitmap = FPDFBitmap_Create(width, height, 0); 69 FPDF_BITMAP bitmap = FPDFBitmap_Create(width, height, 0);
70 if (!bitmap) { 70 if (bitmap) {
71 return false; 71 FPDFBitmap_FillRect(bitmap, 0, 0, width, height, 0xFFFFFFFF);
72 FPDF_RenderPageBitmap(bitmap, page, 0, 0, width, height, 0, 0);
73
74 FPDF_FFLDraw(form, bitmap, page, 0, 0, width, height, 0, 0);
75
76 FPDFBitmap_Destroy(bitmap);
72 } 77 }
73
74 FPDFBitmap_FillRect(bitmap, 0, 0, width, height, 0xFFFFFFFF);
75 FPDF_RenderPageBitmap(bitmap, page, 0, 0, width, height, 0, 0);
76
77 FPDF_FFLDraw(form, bitmap, page, 0, 0, width, height, 0, 0);
78
79 FPDFBitmap_Destroy(bitmap);
80 FORM_DoPageAAction(page, form, FPDFPAGE_AACTION_CLOSE); 78 FORM_DoPageAAction(page, form, FPDFPAGE_AACTION_CLOSE);
81 FORM_OnBeforeClosePage(page, form); 79 FORM_OnBeforeClosePage(page, form);
82 FPDFText_ClosePage(text_page); 80 FPDFText_ClosePage(text_page);
83 FPDF_ClosePage(page); 81 FPDF_ClosePage(page);
84 return true; 82 return !!bitmap;
85 } 83 }
86 84
87 static void RenderPdf(const char* pBuf, size_t len) { 85 static void RenderPdf(const char* pBuf, size_t len) {
88 IPDF_JSPLATFORM platform_callbacks; 86 IPDF_JSPLATFORM platform_callbacks;
89 memset(&platform_callbacks, '\0', sizeof(platform_callbacks)); 87 memset(&platform_callbacks, '\0', sizeof(platform_callbacks));
90 platform_callbacks.version = 3; 88 platform_callbacks.version = 3;
91 platform_callbacks.app_alert = ExampleAppAlert; 89 platform_callbacks.app_alert = ExampleAppAlert;
92 platform_callbacks.Doc_gotoPage = ExampleDocGotoPage; 90 platform_callbacks.Doc_gotoPage = ExampleDocGotoPage;
93 91
94 FPDF_FORMFILLINFO form_callbacks; 92 FPDF_FORMFILLINFO form_callbacks;
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
215 FPDF_LIBRARY_CONFIG config; 213 FPDF_LIBRARY_CONFIG config;
216 UNSUPPORT_INFO unsupport_info; 214 UNSUPPORT_INFO unsupport_info;
217 }; 215 };
218 216
219 static TestCase* testCase = new TestCase(); 217 static TestCase* testCase = new TestCase();
220 218
221 extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { 219 extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
222 RenderPdf(reinterpret_cast<const char*>(data), size); 220 RenderPdf(reinterpret_cast<const char*>(data), size);
223 return 0; 221 return 0;
224 } 222 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698