aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFabian Meumertzheim <fabian@meumertzhe.im>2022-08-04 11:28:06 +0200
committerFabian Meumertzheim <fabian@meumertzhe.im>2022-08-10 12:50:59 +0200
commit33bfc7db10bb7adbf3dfc944cbb3711f19bf181b (patch)
tree5ecbecb3b680141d694e177ad74f829b3f8e4262
parent5585339ca6a009d2e2507513b35f05682358f4ba (diff)
downloadjazzer-api-33bfc7db10bb7adbf3dfc944cbb3711f19bf181b.tar.gz
all: Mark JNI and fuzz target functions as [[maybe_unused]]
-rw-r--r--agent/src/jmh/native/com/code_intelligence/jazzer/runtime/fuzzer_callbacks.cpp5
-rw-r--r--driver/fuzzed_data_provider.cpp9
-rw-r--r--driver/libfuzzer_fuzz_target.cpp15
-rw-r--r--driver/sanitizer_symbols.cpp4
-rw-r--r--driver/signal_handler.cpp3
5 files changed, 23 insertions, 13 deletions
diff --git a/agent/src/jmh/native/com/code_intelligence/jazzer/runtime/fuzzer_callbacks.cpp b/agent/src/jmh/native/com/code_intelligence/jazzer/runtime/fuzzer_callbacks.cpp
index 689a53d6..718a3924 100644
--- a/agent/src/jmh/native/com/code_intelligence/jazzer/runtime/fuzzer_callbacks.cpp
+++ b/agent/src/jmh/native/com/code_intelligence/jazzer/runtime/fuzzer_callbacks.cpp
@@ -43,7 +43,10 @@ void __sanitizer_cov_trace_div8(uint64_t val);
void __sanitizer_cov_trace_gep(uintptr_t idx);
// Not called but required to link against libFuzzer.
-int LLVMFuzzerTestOneInput(const uint8_t *data, std::size_t size) { return 0; }
+[[maybe_unused]] int LLVMFuzzerTestOneInput(const uint8_t *data,
+ std::size_t size) {
+ return 0;
+}
}
inline __attribute__((always_inline)) void *idToPc(jint id) {
diff --git a/driver/fuzzed_data_provider.cpp b/driver/fuzzed_data_provider.cpp
index ef595d2d..f4956ac7 100644
--- a/driver/fuzzed_data_provider.cpp
+++ b/driver/fuzzed_data_provider.cpp
@@ -700,18 +700,21 @@ const jint kNumFuzzedDataMethods =
sizeof(kFuzzedDataMethods) / sizeof(kFuzzedDataMethods[0]);
} // namespace
-void Java_com_code_1intelligence_jazzer_runtime_FuzzedDataProviderImpl_nativeInit(
+[[maybe_unused]] void
+Java_com_code_1intelligence_jazzer_runtime_FuzzedDataProviderImpl_nativeInit(
JNIEnv *env, jclass clazz) {
env->RegisterNatives(clazz, kFuzzedDataMethods, kNumFuzzedDataMethods);
}
-void Java_com_code_1intelligence_jazzer_runtime_FuzzedDataProviderImpl_reset(
+[[maybe_unused]] void
+Java_com_code_1intelligence_jazzer_runtime_FuzzedDataProviderImpl_reset(
JNIEnv *env, jclass clazz) {
gDataPtr = gFuzzerInputStart;
gRemainingBytes = gFuzzerInputSize;
}
-void Java_com_code_1intelligence_jazzer_runtime_FuzzedDataProviderImpl_feed(
+[[maybe_unused]] void
+Java_com_code_1intelligence_jazzer_runtime_FuzzedDataProviderImpl_feed(
JNIEnv *env, jclass, jbyteArray input) {
// This line is why this function must not be used if FeedFuzzedDataProvider
// is also called from native code.
diff --git a/driver/libfuzzer_fuzz_target.cpp b/driver/libfuzzer_fuzz_target.cpp
index 15c7d358..58380a24 100644
--- a/driver/libfuzzer_fuzz_target.cpp
+++ b/driver/libfuzzer_fuzz_target.cpp
@@ -22,7 +22,7 @@ bool is_asan_active = false;
}
extern "C" {
-const char *__asan_default_options() {
+[[maybe_unused]] const char *__asan_default_options() {
is_asan_active = true;
// LeakSanitizer is not yet supported as it reports too many false positives
// due to how the JVM GC works.
@@ -32,7 +32,7 @@ const char *__asan_default_options() {
return "abort_on_error=0,detect_leaks=0,exitcode=76";
}
-const char *__ubsan_default_options() {
+[[maybe_unused]] const char *__ubsan_default_options() {
// We use a distinguished exit code to recognize UBSan crashes in tests.
// Also specify abort_on_error=0 explicitly since UBSan aborts rather than
// exits on macOS by default, which would cause our exit code to be ignored.
@@ -74,19 +74,21 @@ extern "C" [[maybe_unused]] void __jazzer_set_death_callback(
});
}
-void Java_com_code_1intelligence_jazzer_driver_FuzzTargetRunner_printCrashingInput(
+[[maybe_unused]] void
+Java_com_code_1intelligence_jazzer_driver_FuzzTargetRunner_printCrashingInput(
JNIEnv *, jclass) {
jazzer::AbstractLibfuzzerDriver::libfuzzer_print_crashing_input_();
}
-void Java_com_code_1intelligence_jazzer_driver_FuzzTargetRunner__1Exit(
+[[maybe_unused]] void
+Java_com_code_1intelligence_jazzer_driver_FuzzTargetRunner__1Exit(
JNIEnv *, jclass, jint exit_code) {
_Exit(exit_code);
}
// Entry point called by libfuzzer before any LLVMFuzzerTestOneInput(...)
// invocations.
-extern "C" int LLVMFuzzerInitialize(int *argc, char ***argv) {
+extern "C" [[maybe_unused]] int LLVMFuzzerInitialize(int *argc, char ***argv) {
if (is_asan_active) {
std::cerr << "WARN: Jazzer is not compatible with LeakSanitizer yet. Leaks "
"are not reported."
@@ -98,6 +100,7 @@ extern "C" int LLVMFuzzerInitialize(int *argc, char ***argv) {
}
// Called by the fuzzer for every fuzzing input.
-extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, const size_t size) {
+extern "C" [[maybe_unused]] int LLVMFuzzerTestOneInput(const uint8_t *data,
+ const size_t size) {
return gLibfuzzerDriver->TestOneInput(data, size);
}
diff --git a/driver/sanitizer_symbols.cpp b/driver/sanitizer_symbols.cpp
index 10255ef1..c009fcbe 100644
--- a/driver/sanitizer_symbols.cpp
+++ b/driver/sanitizer_symbols.cpp
@@ -17,13 +17,13 @@ extern "C" void __sanitizer_set_death_callback(void (*)()) {}
// Suppress libFuzzer warnings about missing sanitizer methods in non-sanitizer
// builds.
-extern "C" int __sanitizer_acquire_crash_state() { return 1; }
+extern "C" [[maybe_unused]] int __sanitizer_acquire_crash_state() { return 1; }
namespace jazzer {
void DumpJvmStackTraces();
}
// Dump a JVM stack trace on timeouts.
-extern "C" void __sanitizer_print_stack_trace() {
+extern "C" [[maybe_unused]] void __sanitizer_print_stack_trace() {
jazzer::DumpJvmStackTraces();
}
diff --git a/driver/signal_handler.cpp b/driver/signal_handler.cpp
index 0b984978..2600a53a 100644
--- a/driver/signal_handler.cpp
+++ b/driver/signal_handler.cpp
@@ -26,7 +26,8 @@
#endif
// Handles SIGINT raised while running Java code.
-void Java_com_code_1intelligence_jazzer_runtime_SignalHandler_handleInterrupt(
+[[maybe_unused]] void
+Java_com_code_1intelligence_jazzer_runtime_SignalHandler_handleInterrupt(
JNIEnv *, jclass) {
static std::atomic<bool> already_exiting{false};
if (!already_exiting.exchange(true)) {