1# Copyright 2016 The PDFium Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5import("../../pdfium.gni")
6
7config("libfuzzer_config") {
8  configs = [ "../..:pdfium_core_config" ]
9
10  defines = [
11    "PNG_PREFIX",
12    "PNG_USE_READ_MACROS",
13  ]
14  include_dirs = [ "../.." ]
15  if (pdf_enable_v8) {
16    defines += [ "PDF_ENABLE_V8" ]
17  }
18  if (pdf_enable_xfa) {
19    defines += [ "PDF_ENABLE_XFA" ]
20  }
21}
22
23group("libfuzzer") {
24  testonly = true
25  deps = [
26    ":pdf_cmap_fuzzer",
27    ":pdf_codec_a85_fuzzer",
28    ":pdf_codec_fax_fuzzer",
29    ":pdf_codec_icc_fuzzer",
30    ":pdf_codec_jbig2_fuzzer",
31    ":pdf_codec_rle_fuzzer",
32    ":pdf_font_fuzzer",
33    ":pdf_hint_table_fuzzer",
34    ":pdf_jpx_fuzzer",
35    ":pdf_psengine_fuzzer",
36    ":pdf_streamparser_fuzzer",
37  ]
38  if (pdf_enable_xfa) {
39    deps += [
40      ":pdf_cfx_barcode_fuzzer",
41      ":pdf_cfx_saxreader_fuzzer",
42      ":pdf_codec_bmp_fuzzer",
43      ":pdf_codec_gif_fuzzer",
44      ":pdf_codec_jpeg_fuzzer",
45      ":pdf_codec_png_fuzzer",
46      ":pdf_codec_tiff_fuzzer",
47      ":pdf_css_fuzzer",
48      ":pdf_fm2js_fuzzer",
49      ":pdf_formcalc_fuzzer",
50      ":pdf_lzw_fuzzer",
51      ":pdf_xml_fuzzer",
52    ]
53  }
54}
55
56template("pdfium_fuzzer") {
57  source_set(target_name) {
58    sources = invoker.sources + [ "pdf_fuzzer_init.cc" ]
59    deps = [
60      "../..:pdfium",
61    ]
62    if (defined(invoker.deps)) {
63      deps += invoker.deps
64    }
65    testonly = true
66    configs -= [ "//build/config/compiler:chromium_code" ]
67    configs += [
68      "//build/config/compiler:no_chromium_code",
69      ":libfuzzer_config",
70    ]
71  }
72}
73
74if (pdf_enable_xfa) {
75  pdfium_fuzzer("pdf_cfx_barcode_fuzzer") {
76    sources = [
77      "pdf_cfx_barcode_fuzzer.cc",
78    ]
79  }
80
81  pdfium_fuzzer("pdf_cfx_saxreader_fuzzer") {
82    sources = [
83      "pdf_cfx_saxreader_fuzzer.cc",
84    ]
85  }
86
87  pdfium_fuzzer("pdf_codec_bmp_fuzzer") {
88    sources = [
89      "pdf_codec_bmp_fuzzer.cc",
90      "xfa_codec_fuzzer.h",
91    ]
92  }
93
94  pdfium_fuzzer("pdf_codec_gif_fuzzer") {
95    sources = [
96      "pdf_codec_gif_fuzzer.cc",
97      "xfa_codec_fuzzer.h",
98    ]
99  }
100
101  pdfium_fuzzer("pdf_codec_jpeg_fuzzer") {
102    sources = [
103      "pdf_codec_jpeg_fuzzer.cc",
104      "xfa_codec_fuzzer.h",
105    ]
106  }
107
108  pdfium_fuzzer("pdf_codec_png_fuzzer") {
109    sources = [
110      "pdf_codec_png_fuzzer.cc",
111      "xfa_codec_fuzzer.h",
112    ]
113  }
114
115  pdfium_fuzzer("pdf_codec_tiff_fuzzer") {
116    sources = [
117      "pdf_codec_tiff_fuzzer.cc",
118      "xfa_codec_fuzzer.h",
119    ]
120  }
121
122  pdfium_fuzzer("pdf_css_fuzzer") {
123    sources = [
124      "pdf_css_fuzzer.cc",
125    ]
126  }
127
128  pdfium_fuzzer("pdf_fm2js_fuzzer") {
129    sources = [
130      "pdf_fm2js_fuzzer.cc",
131    ]
132  }
133
134  pdfium_fuzzer("pdf_formcalc_fuzzer") {
135    sources = [
136      "pdf_formcalc_fuzzer.cc",
137    ]
138  }
139
140  pdfium_fuzzer("pdf_lzw_fuzzer") {
141    sources = [
142      "pdf_lzw_fuzzer.cc",
143    ]
144  }
145
146  pdfium_fuzzer("pdf_xml_fuzzer") {
147    sources = [
148      "pdf_xml_fuzzer.cc",
149    ]
150  }
151}
152
153pdfium_fuzzer("pdf_cmap_fuzzer") {
154  sources = [
155    "pdf_cmap_fuzzer.cc",
156  ]
157}
158
159pdfium_fuzzer("pdf_codec_a85_fuzzer") {
160  sources = [
161    "pdf_codec_a85_fuzzer.cc",
162  ]
163}
164
165pdfium_fuzzer("pdf_codec_fax_fuzzer") {
166  sources = [
167    "pdf_codec_fax_fuzzer.cc",
168  ]
169}
170
171pdfium_fuzzer("pdf_codec_icc_fuzzer") {
172  deps = [
173    "../../third_party/:lcms2",
174  ]
175  sources = [
176    "pdf_codec_icc_fuzzer.cc",
177  ]
178}
179
180pdfium_fuzzer("pdf_codec_jbig2_fuzzer") {
181  sources = [
182    "pdf_codec_jbig2_fuzzer.cc",
183  ]
184}
185
186pdfium_fuzzer("pdf_codec_rle_fuzzer") {
187  sources = [
188    "pdf_codec_rle_fuzzer.cc",
189  ]
190}
191
192pdfium_fuzzer("pdf_font_fuzzer") {
193  sources = [
194    "pdf_font_fuzzer.cc",
195  ]
196}
197
198pdfium_fuzzer("pdf_hint_table_fuzzer") {
199  sources = [
200    "pdf_hint_table_fuzzer.cc",
201  ]
202}
203
204pdfium_fuzzer("pdf_jpx_fuzzer") {
205  sources = [
206    "pdf_jpx_fuzzer.cc",
207  ]
208}
209
210pdfium_fuzzer("pdf_psengine_fuzzer") {
211  sources = [
212    "pdf_psengine_fuzzer.cc",
213  ]
214}
215
216pdfium_fuzzer("pdf_streamparser_fuzzer") {
217  sources = [
218    "pdf_streamparser_fuzzer.cc",
219  ]
220}
221