xref: /aosp_15_r20/external/jazzer-api/examples/BUILD.bazel (revision 33edd6723662ea34453766bfdca85dbfdd5342b8)
1*33edd672SMarkload("@io_bazel_rules_kotlin//kotlin:jvm.bzl", "kt_jvm_library")
2*33edd672SMarkload("@fmeum_rules_jni//jni:defs.bzl", "java_jni_library")
3*33edd672SMarkload("//bazel:compat.bzl", "SKIP_ON_MACOS", "SKIP_ON_WINDOWS")
4*33edd672SMarkload("//bazel:fuzz_target.bzl", "java_fuzz_target_test")
5*33edd672SMarkload("//bazel:kotlin.bzl", "ktlint")
6*33edd672SMark
7*33edd672SMarkjava_fuzz_target_test(
8*33edd672SMark    name = "Autofuzz",
9*33edd672SMark    allowed_findings = ["java.lang.ArrayIndexOutOfBoundsException"],
10*33edd672SMark    fuzzer_args = [
11*33edd672SMark        "--autofuzz=com.google.json.JsonSanitizer::sanitize",
12*33edd672SMark    ],
13*33edd672SMark    runtime_deps = [
14*33edd672SMark        "@maven//:com_mikesamuel_json_sanitizer",
15*33edd672SMark    ],
16*33edd672SMark)
17*33edd672SMark
18*33edd672SMarkjava_fuzz_target_test(
19*33edd672SMark    name = "ExampleFuzzer",
20*33edd672SMark    srcs = ["src/main/java/com/example/ExampleFuzzer.java"],
21*33edd672SMark    allowed_findings = ["com.code_intelligence.jazzer.api.FuzzerSecurityIssueMedium"],
22*33edd672SMark    hook_jar = "ExampleFuzzerHooks_deploy.jar",
23*33edd672SMark    target_class = "com.example.ExampleFuzzer",
24*33edd672SMark    # Does not crash due to not using the hook.
25*33edd672SMark    verify_crash_reproducer = False,
26*33edd672SMark)
27*33edd672SMark
28*33edd672SMarkjava_binary(
29*33edd672SMark    name = "ExampleFuzzerHooks",
30*33edd672SMark    srcs = ["src/main/java/com/example/ExampleFuzzerHooks.java"],
31*33edd672SMark    create_executable = False,
32*33edd672SMark    # Comment out the next line to keep the ExampleFuzzer running indefinitely - without the hook, it will never be able
33*33edd672SMark    # to pass the comparison with the random number.
34*33edd672SMark    deploy_manifest_lines = ["Jazzer-Hook-Classes: com.example.ExampleFuzzerHooks"],
35*33edd672SMark    deps = ["//src/main/java/com/code_intelligence/jazzer/api:hooks"],
36*33edd672SMark)
37*33edd672SMark
38*33edd672SMarkjava_jni_library(
39*33edd672SMark    name = "example_fuzzer_with_native_lib",
40*33edd672SMark    srcs = [
41*33edd672SMark        "src/main/java/com/example/ExampleFuzzerWithNative.java",
42*33edd672SMark    ],
43*33edd672SMark    native_libs = [
44*33edd672SMark        "//examples/src/main/native/com/example:native_asan",
45*33edd672SMark        "//examples/src/main/native/com/example:native_ubsan",
46*33edd672SMark    ],
47*33edd672SMark    visibility = ["//examples/src/main/native/com/example:__pkg__"],
48*33edd672SMark    deps = [
49*33edd672SMark        "//deploy:jazzer-api",
50*33edd672SMark    ],
51*33edd672SMark)
52*33edd672SMark
53*33edd672SMarkjava_fuzz_target_test(
54*33edd672SMark    name = "ExampleFuzzerWithASan",
55*33edd672SMark    allowed_findings = ["native"],
56*33edd672SMark    env = {"EXAMPLE_NATIVE_LIB": "native_asan"},
57*33edd672SMark    env_inherit = ["CC"],
58*33edd672SMark    fuzzer_args = [
59*33edd672SMark        "--asan",
60*33edd672SMark    ],
61*33edd672SMark    # The shell launcher generated by Jazzer is killed in CI, even with codesigning disabled on the
62*33edd672SMark    # Java binary. This is not reproducible locally or with JDK 17.
63*33edd672SMark    tags = ["no-macos-x86_64-jdk8"],
64*33edd672SMark    target_class = "com.example.ExampleFuzzerWithNative",
65*33edd672SMark    target_compatible_with = SKIP_ON_WINDOWS,
66*33edd672SMark    verify_crash_reproducer = False,
67*33edd672SMark    runtime_deps = [
68*33edd672SMark        ":example_fuzzer_with_native_lib",
69*33edd672SMark    ],
70*33edd672SMark)
71*33edd672SMark
72*33edd672SMarkjava_fuzz_target_test(
73*33edd672SMark    name = "ExampleFuzzerWithUBSan",
74*33edd672SMark    allowed_findings = ["native"],
75*33edd672SMark    env = {"EXAMPLE_NATIVE_LIB": "native_ubsan"},
76*33edd672SMark    env_inherit = ["CC"],
77*33edd672SMark    fuzzer_args = [
78*33edd672SMark        "--ubsan",
79*33edd672SMark    ],
80*33edd672SMark    # The shell launcher generated by Jazzer is killed in CI, even with codesigning disabled on the
81*33edd672SMark    # Java binary. This is not reproducible locally or with JDK 17.
82*33edd672SMark    tags = ["no-macos-x86_64-jdk8"],
83*33edd672SMark    target_class = "com.example.ExampleFuzzerWithNative",
84*33edd672SMark    # Crashes at runtime without an error message.
85*33edd672SMark    target_compatible_with = SKIP_ON_WINDOWS,
86*33edd672SMark    verify_crash_reproducer = False,
87*33edd672SMark    runtime_deps = [
88*33edd672SMark        ":example_fuzzer_with_native_lib",
89*33edd672SMark    ],
90*33edd672SMark)
91*33edd672SMark
92*33edd672SMarkjava_binary(
93*33edd672SMark    name = "ExamplePathTraversalFuzzerHooks",
94*33edd672SMark    srcs = ["src/main/java/com/example/ExamplePathTraversalFuzzerHooks.java"],
95*33edd672SMark    create_executable = False,
96*33edd672SMark    deploy_manifest_lines = ["Jazzer-Hook-Classes: com.example.ExamplePathTraversalFuzzerHooks"],
97*33edd672SMark    deps = ["//src/main/java/com/code_intelligence/jazzer/api:hooks"],
98*33edd672SMark)
99*33edd672SMark
100*33edd672SMarkjava_fuzz_target_test(
101*33edd672SMark    name = "ExamplePathTraversalFuzzer",
102*33edd672SMark    srcs = [
103*33edd672SMark        "src/main/java/com/example/ExamplePathTraversalFuzzer.java",
104*33edd672SMark    ],
105*33edd672SMark    allowed_findings = ["com.code_intelligence.jazzer.api.FuzzerSecurityIssueHigh"],
106*33edd672SMark    hook_jar = "ExamplePathTraversalFuzzerHooks_deploy.jar",
107*33edd672SMark    target_class = "com.example.ExamplePathTraversalFuzzer",
108*33edd672SMark    verify_crash_reproducer = False,
109*33edd672SMark)
110*33edd672SMark
111*33edd672SMarkjava_fuzz_target_test(
112*33edd672SMark    name = "ExampleValueProfileFuzzer",
113*33edd672SMark    srcs = [
114*33edd672SMark        "src/main/java/com/example/ExampleValueProfileFuzzer.java",
115*33edd672SMark    ],
116*33edd672SMark    allowed_findings = ["com.code_intelligence.jazzer.api.FuzzerSecurityIssueLow"],
117*33edd672SMark    # Comment out the next line to keep the fuzzer running indefinitely.
118*33edd672SMark    fuzzer_args = ["-use_value_profile=1"],
119*33edd672SMark    target_class = "com.example.ExampleValueProfileFuzzer",
120*33edd672SMark)
121*33edd672SMark
122*33edd672SMarkjava_fuzz_target_test(
123*33edd672SMark    name = "MazeFuzzer",
124*33edd672SMark    srcs = [
125*33edd672SMark        "src/main/java/com/example/MazeFuzzer.java",
126*33edd672SMark    ],
127*33edd672SMark    allowed_findings = ["com.example.MazeFuzzer$$TreasureFoundException"],
128*33edd672SMark    fuzzer_args = ["-use_value_profile=1"],
129*33edd672SMark    target_class = "com.example.MazeFuzzer",
130*33edd672SMark)
131*33edd672SMark
132*33edd672SMarkjava_fuzz_target_test(
133*33edd672SMark    name = "ExampleOutOfMemoryFuzzer",
134*33edd672SMark    timeout = "short",
135*33edd672SMark    srcs = [
136*33edd672SMark        "src/main/java/com/example/ExampleOutOfMemoryFuzzer.java",
137*33edd672SMark    ],
138*33edd672SMark    allowed_findings = [
139*33edd672SMark        "com.code_intelligence.jazzer.api.FuzzerSecurityIssueLow",
140*33edd672SMark        "java.lang.OutOfMemoryError",
141*33edd672SMark    ],
142*33edd672SMark    fuzzer_args = ["--jvm_args=-Xmx512m"],
143*33edd672SMark    target_class = "com.example.ExampleOutOfMemoryFuzzer",
144*33edd672SMark)
145*33edd672SMark
146*33edd672SMarkjava_fuzz_target_test(
147*33edd672SMark    name = "ExampleStackOverflowFuzzer",
148*33edd672SMark    srcs = [
149*33edd672SMark        "src/main/java/com/example/ExampleStackOverflowFuzzer.java",
150*33edd672SMark    ],
151*33edd672SMark    allowed_findings = [
152*33edd672SMark        "com.code_intelligence.jazzer.api.FuzzerSecurityIssueLow",
153*33edd672SMark        "java.lang.StackOverflowError",
154*33edd672SMark    ],
155*33edd672SMark    target_class = "com.example.ExampleStackOverflowFuzzer",
156*33edd672SMark    # Crashes with a segfault before any stack trace printing is reached.
157*33edd672SMark    target_compatible_with = SKIP_ON_MACOS,
158*33edd672SMark)
159*33edd672SMark
160*33edd672SMark# WARNING: This fuzz target uses a vulnerable version of log4j, which could result in the execution
161*33edd672SMark# of arbitrary code during fuzzing if executed with an older JDK. Use at your own risk.
162*33edd672SMarkjava_fuzz_target_test(
163*33edd672SMark    name = "Log4jFuzzer",
164*33edd672SMark    timeout = "long",
165*33edd672SMark    srcs = [
166*33edd672SMark        "src/main/java/com/example/Log4jFuzzer.java",
167*33edd672SMark    ],
168*33edd672SMark    fuzzer_args = [
169*33edd672SMark        "-fork=4",
170*33edd672SMark        "-use_value_profile=1",
171*33edd672SMark    ],
172*33edd672SMark    # Finding this bug takes ~5 minutes on a decent laptop, but the GitHub Actions machines are not
173*33edd672SMark    # powerful enough to run it as part of our test suite.
174*33edd672SMark    tags = ["manual"],
175*33edd672SMark    target_class = "com.example.Log4jFuzzer",
176*33edd672SMark    deps = [
177*33edd672SMark        "@maven//:org_apache_logging_log4j_log4j_api",
178*33edd672SMark        "@maven//:org_apache_logging_log4j_log4j_core",
179*33edd672SMark    ],
180*33edd672SMark)
181*33edd672SMark
182*33edd672SMark# WARNING: This fuzz target uses a vulnerable version of Apache Commons Text, which could result in the execution
183*33edd672SMark# of arbitrary code during fuzzing if executed with an older JDK. Use at your own risk.
184*33edd672SMarkjava_fuzz_target_test(
185*33edd672SMark    name = "CommonsTextFuzzer",
186*33edd672SMark    size = "enormous",
187*33edd672SMark    srcs = [
188*33edd672SMark        "src/main/java/com/example/CommonsTextFuzzer.java",
189*33edd672SMark    ],
190*33edd672SMark    fuzzer_args = [
191*33edd672SMark        "-fork=8",
192*33edd672SMark        "-use_value_profile=1",
193*33edd672SMark    ],
194*33edd672SMark    tags = ["manual"],
195*33edd672SMark    target_class = "com.example.CommonsTextFuzzer",
196*33edd672SMark    verify_crash_reproducer = False,
197*33edd672SMark    deps = [
198*33edd672SMark        "@maven//:org_apache_commons_commons_text",
199*33edd672SMark    ],
200*33edd672SMark)
201*33edd672SMark
202*33edd672SMarkjava_fuzz_target_test(
203*33edd672SMark    name = "JpegImageParserFuzzer",
204*33edd672SMark    size = "enormous",
205*33edd672SMark    srcs = [
206*33edd672SMark        "src/main/java/com/example/JpegImageParserFuzzer.java",
207*33edd672SMark    ],
208*33edd672SMark    allowed_findings = ["java.lang.NegativeArraySizeException"],
209*33edd672SMark    fuzzer_args = [
210*33edd672SMark        "-fork=2",
211*33edd672SMark    ],
212*33edd672SMark    tags = ["exclusive-if-local"],
213*33edd672SMark    target_class = "com.example.JpegImageParserFuzzer",
214*33edd672SMark    # The exit codes of the forked libFuzzer processes are not picked up correctly.
215*33edd672SMark    target_compatible_with = SKIP_ON_MACOS,
216*33edd672SMark    deps = [
217*33edd672SMark        "@maven//:org_apache_commons_commons_imaging",
218*33edd672SMark    ],
219*33edd672SMark)
220*33edd672SMark
221*33edd672SMarkjava_fuzz_target_test(
222*33edd672SMark    name = "GifImageParserFuzzer",
223*33edd672SMark    srcs = [
224*33edd672SMark        "src/main/java/com/example/GifImageParserFuzzer.java",
225*33edd672SMark    ],
226*33edd672SMark    allowed_findings = [
227*33edd672SMark        "java.lang.ArrayIndexOutOfBoundsException",
228*33edd672SMark        "java.lang.IllegalArgumentException",
229*33edd672SMark        "java.lang.OutOfMemoryError",
230*33edd672SMark    ],
231*33edd672SMark    target_class = "com.example.GifImageParserFuzzer",
232*33edd672SMark    deps = [
233*33edd672SMark        "@maven//:org_apache_commons_commons_imaging",
234*33edd672SMark    ],
235*33edd672SMark)
236*33edd672SMark
237*33edd672SMarkjava_fuzz_target_test(
238*33edd672SMark    name = "TiffImageParserFuzzer",
239*33edd672SMark    srcs = [
240*33edd672SMark        "src/main/java/com/example/TiffImageParserFuzzer.java",
241*33edd672SMark    ],
242*33edd672SMark    tags = ["manual"],
243*33edd672SMark    target_class = "com.example.TiffImageParserFuzzer",
244*33edd672SMark    deps = [
245*33edd672SMark        "@maven//:org_apache_commons_commons_imaging",
246*33edd672SMark    ],
247*33edd672SMark)
248*33edd672SMark
249*33edd672SMarkjava_fuzz_target_test(
250*33edd672SMark    name = "JsonSanitizerCrashFuzzer",
251*33edd672SMark    srcs = [
252*33edd672SMark        "src/main/java/com/example/JsonSanitizerCrashFuzzer.java",
253*33edd672SMark    ],
254*33edd672SMark    allowed_findings = ["java.lang.IndexOutOfBoundsException"],
255*33edd672SMark    target_class = "com.example.JsonSanitizerCrashFuzzer",
256*33edd672SMark    deps = [
257*33edd672SMark        "@maven//:com_mikesamuel_json_sanitizer",
258*33edd672SMark    ],
259*33edd672SMark)
260*33edd672SMark
261*33edd672SMarkjava_fuzz_target_test(
262*33edd672SMark    name = "JsonSanitizerDenylistFuzzer",
263*33edd672SMark    srcs = [
264*33edd672SMark        "src/main/java/com/example/JsonSanitizerDenylistFuzzer.java",
265*33edd672SMark    ],
266*33edd672SMark    allowed_findings = ["java.lang.AssertionError"],
267*33edd672SMark    target_class = "com.example.JsonSanitizerDenylistFuzzer",
268*33edd672SMark    deps = [
269*33edd672SMark        "@maven//:com_mikesamuel_json_sanitizer",
270*33edd672SMark    ],
271*33edd672SMark)
272*33edd672SMark
273*33edd672SMarkjava_binary(
274*33edd672SMark    name = "JsonSanitizerReplayerCrash",
275*33edd672SMark    data = [
276*33edd672SMark        ":json_sanitizer_denylist_crash",
277*33edd672SMark    ],
278*33edd672SMark    main_class = "com.code_intelligence.jazzer.replay.Replayer",
279*33edd672SMark    runtime_deps = [
280*33edd672SMark        ":JsonSanitizerDenylistFuzzer_target_deploy.jar",
281*33edd672SMark        "//src/main/java/com/code_intelligence/jazzer/replay:Replayer_deploy.jar",
282*33edd672SMark    ],
283*33edd672SMark)
284*33edd672SMark
285*33edd672SMarksh_test(
286*33edd672SMark    name = "JsonSanitizerReplayerCrashTest",
287*33edd672SMark    srcs = ["check_for_finding.sh"],
288*33edd672SMark    args = [
289*33edd672SMark        "jazzer/$(rootpath :JsonSanitizerReplayerCrash)",
290*33edd672SMark        "com.example.JsonSanitizerDenylistFuzzer",
291*33edd672SMark        "jazzer/$(rootpath :json_sanitizer_denylist_crash)",
292*33edd672SMark    ],
293*33edd672SMark    data = [
294*33edd672SMark        ":JsonSanitizerReplayerCrash",
295*33edd672SMark        ":json_sanitizer_denylist_crash",
296*33edd672SMark    ],
297*33edd672SMark    deps = [
298*33edd672SMark        "@bazel_tools//tools/bash/runfiles",
299*33edd672SMark    ],
300*33edd672SMark)
301*33edd672SMark
302*33edd672SMarkjava_fuzz_target_test(
303*33edd672SMark    name = "JsonSanitizerIdempotenceFuzzer",
304*33edd672SMark    srcs = [
305*33edd672SMark        "src/main/java/com/example/JsonSanitizerIdempotenceFuzzer.java",
306*33edd672SMark    ],
307*33edd672SMark    allowed_findings = ["java.lang.AssertionError"],
308*33edd672SMark    target_class = "com.example.JsonSanitizerIdempotenceFuzzer",
309*33edd672SMark    deps = [
310*33edd672SMark        "@maven//:com_mikesamuel_json_sanitizer",
311*33edd672SMark    ],
312*33edd672SMark)
313*33edd672SMark
314*33edd672SMarkjava_fuzz_target_test(
315*33edd672SMark    name = "JsonSanitizerValidJsonFuzzer",
316*33edd672SMark    srcs = [
317*33edd672SMark        "src/main/java/com/example/JsonSanitizerValidJsonFuzzer.java",
318*33edd672SMark    ],
319*33edd672SMark    allowed_findings = ["com.code_intelligence.jazzer.api.FuzzerSecurityIssueLow"],
320*33edd672SMark    target_class = "com.example.JsonSanitizerValidJsonFuzzer",
321*33edd672SMark    deps = [
322*33edd672SMark        "@maven//:com_google_code_gson_gson",
323*33edd672SMark        "@maven//:com_mikesamuel_json_sanitizer",
324*33edd672SMark    ],
325*33edd672SMark)
326*33edd672SMark
327*33edd672SMarkjava_fuzz_target_test(
328*33edd672SMark    name = "JacksonCborFuzzer",
329*33edd672SMark    srcs = [
330*33edd672SMark        "src/main/java/com/example/JacksonCborFuzzer.java",
331*33edd672SMark    ],
332*33edd672SMark    allowed_findings = ["java.lang.NullPointerException"],
333*33edd672SMark    target_class = "com.example.JacksonCborFuzzer",
334*33edd672SMark    deps = [
335*33edd672SMark        "@maven//:com_fasterxml_jackson_core_jackson_core",
336*33edd672SMark        "@maven//:com_fasterxml_jackson_core_jackson_databind",
337*33edd672SMark        "@maven//:com_fasterxml_jackson_dataformat_jackson_dataformat_cbor",
338*33edd672SMark    ],
339*33edd672SMark)
340*33edd672SMark
341*33edd672SMarkjava_fuzz_target_test(
342*33edd672SMark    name = "FastJsonFuzzer",
343*33edd672SMark    srcs = [
344*33edd672SMark        "src/main/java/com/example/FastJsonFuzzer.java",
345*33edd672SMark    ],
346*33edd672SMark    allowed_findings = ["java.lang.NumberFormatException"],
347*33edd672SMark    target_class = "com.example.FastJsonFuzzer",
348*33edd672SMark    deps = [
349*33edd672SMark        "@maven//:com_alibaba_fastjson",
350*33edd672SMark    ],
351*33edd672SMark)
352*33edd672SMark
353*33edd672SMarkkt_jvm_library(
354*33edd672SMark    name = "KlaxonFuzzTarget",
355*33edd672SMark    srcs = [
356*33edd672SMark        "src/main/java/com/example/KlaxonFuzzer.kt",
357*33edd672SMark    ],
358*33edd672SMark    deps = [
359*33edd672SMark        "//deploy:jazzer-api",
360*33edd672SMark        "@maven//:com_beust_klaxon",
361*33edd672SMark    ],
362*33edd672SMark)
363*33edd672SMark
364*33edd672SMarkjava_fuzz_target_test(
365*33edd672SMark    name = "KlaxonFuzzer",
366*33edd672SMark    allowed_findings = [
367*33edd672SMark        "java.lang.ClassCastException",
368*33edd672SMark        "java.lang.IllegalStateException",
369*33edd672SMark        "java.lang.NumberFormatException",
370*33edd672SMark        "java.lang.NullPointerException",
371*33edd672SMark    ],
372*33edd672SMark    fuzzer_args = [
373*33edd672SMark        "--keep_going=7",
374*33edd672SMark    ],
375*33edd672SMark    target_class = "com.example.KlaxonFuzzer",
376*33edd672SMark    runtime_deps = [":KlaxonFuzzTarget"],
377*33edd672SMark)
378*33edd672SMark
379*33edd672SMarkkt_jvm_library(
380*33edd672SMark    name = "ExampleKotlinFuzzTarget",
381*33edd672SMark    srcs = [
382*33edd672SMark        "src/main/java/com/example/ExampleKotlinFuzzer.kt",
383*33edd672SMark    ],
384*33edd672SMark    deps = [
385*33edd672SMark        "//deploy:jazzer-api",
386*33edd672SMark    ],
387*33edd672SMark)
388*33edd672SMark
389*33edd672SMarkjava_fuzz_target_test(
390*33edd672SMark    name = "ExampleKotlinFuzzer",
391*33edd672SMark    allowed_findings = [
392*33edd672SMark        "com.code_intelligence.jazzer.api.FuzzerSecurityIssueMedium",
393*33edd672SMark    ],
394*33edd672SMark    target_class = "com.example.ExampleKotlinFuzzer",
395*33edd672SMark    runtime_deps = [":ExampleKotlinFuzzTarget"],
396*33edd672SMark)
397*33edd672SMark
398*33edd672SMarkkt_jvm_library(
399*33edd672SMark    name = "ExampleKotlinValueProfileFuzzTarget",
400*33edd672SMark    srcs = [
401*33edd672SMark        "src/main/java/com/example/ExampleKotlinValueProfileFuzzer.kt",
402*33edd672SMark    ],
403*33edd672SMark    deps = [
404*33edd672SMark        "//deploy:jazzer-api",
405*33edd672SMark    ],
406*33edd672SMark)
407*33edd672SMark
408*33edd672SMarkjava_fuzz_target_test(
409*33edd672SMark    name = "ExampleKotlinValueProfileFuzzer",
410*33edd672SMark    allowed_findings = [
411*33edd672SMark        "com.code_intelligence.jazzer.api.FuzzerSecurityIssueMedium",
412*33edd672SMark    ],
413*33edd672SMark    fuzzer_args = [
414*33edd672SMark        "-use_value_profile=1",
415*33edd672SMark    ],
416*33edd672SMark    target_class = "com.example.ExampleKotlinValueProfileFuzzer",
417*33edd672SMark    runtime_deps = [":ExampleKotlinValueProfileFuzzTarget"],
418*33edd672SMark)
419*33edd672SMark
420*33edd672SMarkjava_fuzz_target_test(
421*33edd672SMark    name = "TurboJpegFuzzer",
422*33edd672SMark    srcs = [
423*33edd672SMark        "src/main/java/com/example/TurboJpegFuzzer.java",
424*33edd672SMark    ],
425*33edd672SMark    data = [
426*33edd672SMark        "@libjpeg_turbo//:turbojpeg_native",
427*33edd672SMark    ],
428*33edd672SMark    fuzzer_args = [
429*33edd672SMark        "-rss_limit_mb=8196",
430*33edd672SMark        "--jvm_args=-Djava.library.path=../libjpeg_turbo",
431*33edd672SMark        "--ubsan",
432*33edd672SMark    ],
433*33edd672SMark    tags = ["manual"],
434*33edd672SMark    target_class = "com.example.TurboJpegFuzzer",
435*33edd672SMark    deps = [
436*33edd672SMark        "@libjpeg_turbo//:turbojpeg_java",
437*33edd672SMark    ],
438*33edd672SMark)
439*33edd672SMark
440*33edd672SMarkjava_fuzz_target_test(
441*33edd672SMark    name = "BatikTranscoderFuzzer",
442*33edd672SMark    srcs = [
443*33edd672SMark        "src/main/java/com/example/BatikTranscoderFuzzer.java",
444*33edd672SMark    ],
445*33edd672SMark    allowed_findings = [
446*33edd672SMark        "com.code_intelligence.jazzer.api.FuzzerSecurityIssueMedium",
447*33edd672SMark    ],
448*33edd672SMark    target_class = "com.example.BatikTranscoderFuzzer",
449*33edd672SMark    verify_crash_reproducer = False,
450*33edd672SMark    deps = [
451*33edd672SMark        "@maven//:org_apache_xmlgraphics_batik_anim",
452*33edd672SMark        "@maven//:org_apache_xmlgraphics_batik_bridge",
453*33edd672SMark        "@maven//:org_apache_xmlgraphics_batik_css",
454*33edd672SMark        "@maven//:org_apache_xmlgraphics_batik_transcoder",
455*33edd672SMark        "@maven//:org_apache_xmlgraphics_batik_util",
456*33edd672SMark    ],
457*33edd672SMark)
458*33edd672SMark
459*33edd672SMarkjava_binary(
460*33edd672SMark    name = "examples",
461*33edd672SMark    create_executable = False,
462*33edd672SMark    visibility = ["//visibility:public"],
463*33edd672SMark    runtime_deps = [
464*33edd672SMark        ":BatikTranscoderFuzzer_target_deploy.jar",
465*33edd672SMark        ":ExampleFuzzer_target_deploy.jar",
466*33edd672SMark        ":ExampleValueProfileFuzzer_target_deploy.jar",
467*33edd672SMark        ":FastJsonFuzzer_target_deploy.jar",
468*33edd672SMark        ":JacksonCborFuzzer_target_deploy.jar",
469*33edd672SMark        ":JpegImageParserFuzzer_target_deploy.jar",
470*33edd672SMark        ":JsonSanitizerDenylistFuzzer_target_deploy.jar",
471*33edd672SMark    ],
472*33edd672SMark)
473*33edd672SMark
474*33edd672SMarkktlint()
475