aboutsummaryrefslogtreecommitdiff
path: root/src/main/native/com/code_intelligence/jazzer/android/jazzer_jvmti_allocator.h
diff options
context:
space:
mode:
authorMark <mteffeteller@google.com>2023-06-21 23:30:18 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2023-06-21 23:30:18 +0000
commit54819157eaa66e14f2c68b54609bd6bfa360b708 (patch)
tree68cf332a40b94b2d28b256b19b916f99220bb0c4 /src/main/native/com/code_intelligence/jazzer/android/jazzer_jvmti_allocator.h
parentba37c2e361c2ba91bacc47fcae5383c52e50f6be (diff)
parente73be1680dae58cb83d869104def1c59102d59b2 (diff)
downloadjazzer-api-54819157eaa66e14f2c68b54609bd6bfa360b708.tar.gz
Sync jazzer in AOSP with upstream repo (new SHA: 30decf81a147c66fa5a098072c38ab6924ba0aa6) am: 9350e0ab03 am: 99d9a79746 am: 34a8e5c8aa am: e73be1680d
Original change: https://android-review.googlesource.com/c/platform/external/jazzer-api/+/2627336 Change-Id: I1b97ed5cdcf2adda4d443148cc0d447974e51785 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
Diffstat (limited to 'src/main/native/com/code_intelligence/jazzer/android/jazzer_jvmti_allocator.h')
-rw-r--r--src/main/native/com/code_intelligence/jazzer/android/jazzer_jvmti_allocator.h52
1 files changed, 52 insertions, 0 deletions
diff --git a/src/main/native/com/code_intelligence/jazzer/android/jazzer_jvmti_allocator.h b/src/main/native/com/code_intelligence/jazzer/android/jazzer_jvmti_allocator.h
new file mode 100644
index 00000000..0748c177
--- /dev/null
+++ b/src/main/native/com/code_intelligence/jazzer/android/jazzer_jvmti_allocator.h
@@ -0,0 +1,52 @@
+/*
+ * Copyright 2023 Code Intelligence GmbH
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <iostream>
+
+#include "slicer/writer.h"
+
+class JazzerJvmtiAllocator : public dex::Writer::Allocator {
+ public:
+ JazzerJvmtiAllocator(jvmtiEnv* jvmti_env) : jvmti_env_(jvmti_env) {}
+
+ virtual void* Allocate(size_t size) {
+ unsigned char* alloc = nullptr;
+ jvmtiError error_num = jvmti_env_->Allocate(size, &alloc);
+
+ if (error_num != JVMTI_ERROR_NONE) {
+ std::cerr << "JazzerJvmtiAllocator Allocation error. JVMTI error: "
+ << error_num << std::endl;
+ }
+
+ return (void*)alloc;
+ }
+
+ virtual void Free(void* ptr) {
+ if (ptr == nullptr) {
+ return;
+ }
+
+ jvmtiError error_num = jvmti_env_->Deallocate((unsigned char*)ptr);
+
+ if (error_num != JVMTI_ERROR_NONE) {
+ std::cout << "JazzerJvmtiAllocator Free error. JVMTI error: " << error_num
+ << std::endl;
+ }
+ }
+
+ private:
+ jvmtiEnv* jvmti_env_;
+};