summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Pawan Wagh <waghpawan@google.com> 2022-12-03 04:50:08 +0000
committer Gerrit Code Review <noreply-gerritcodereview@google.com> 2022-12-03 04:50:08 +0000
commit373ab1fab6f8e6f7f2262f13c995f45b0da2a3e2 (patch)
treed4e99adce1ad534ac689e2f6e6ba6d8fae088844
parentb55d142b238ecf16db75e310327646132f8fa6ca (diff)
parentb44ed765ab6f79ecac78669e35e9676c8a96207d (diff)
Merge "Adding JNI for create random parcel"
-rw-r--r--core/tests/fuzzers/FuzzService/FuzzBinder.java7
-rw-r--r--core/tests/fuzzers/FuzzService/random_parcel_jni.cpp14
-rw-r--r--core/tests/fuzzers/FuzzService/random_parcel_jni.h2
3 files changed, 23 insertions, 0 deletions
diff --git a/core/tests/fuzzers/FuzzService/FuzzBinder.java b/core/tests/fuzzers/FuzzService/FuzzBinder.java
index 7096f52ab392..52aafeb4bc9d 100644
--- a/core/tests/fuzzers/FuzzService/FuzzBinder.java
+++ b/core/tests/fuzzers/FuzzService/FuzzBinder.java
@@ -15,6 +15,7 @@
*/
package randomparcel;
import android.os.IBinder;
+import android.os.Parcel;
public class FuzzBinder {
static {
@@ -33,6 +34,12 @@ public class FuzzBinder {
fuzzServiceInternal(binder, data);
}
+ // This API creates random parcel object
+ public static void createRandomParcel(Parcel parcel, byte[] data) {
+ getRandomParcel(parcel, data);
+ }
+
private static native void fuzzServiceInternal(IBinder binder, byte[] data);
+ private static native void getRandomParcel(Parcel parcel, byte[] data);
private static native int registerNatives();
}
diff --git a/core/tests/fuzzers/FuzzService/random_parcel_jni.cpp b/core/tests/fuzzers/FuzzService/random_parcel_jni.cpp
index c0528d5c7b9a..dbeae87f3279 100644
--- a/core/tests/fuzzers/FuzzService/random_parcel_jni.cpp
+++ b/core/tests/fuzzers/FuzzService/random_parcel_jni.cpp
@@ -16,7 +16,9 @@
#include "random_parcel_jni.h"
#include <android_util_Binder.h>
+#include <android_os_Parcel.h>
#include <fuzzbinder/libbinder_driver.h>
+#include <fuzzbinder/random_parcel.h>
#include <fuzzer/FuzzedDataProvider.h>
using namespace android;
@@ -35,3 +37,15 @@ JNIEXPORT void JNICALL Java_randomparcel_FuzzBinder_fuzzServiceInternal(JNIEnv *
JNIEXPORT jint JNICALL Java_randomparcel_FuzzBinder_registerNatives(JNIEnv* env) {
return registerFrameworkNatives(env);
}
+
+JNIEXPORT void JNICALL Java_randomparcel_FuzzBinder_getRandomParcel(JNIEnv *env, jobject thiz, jobject jparcel, jbyteArray fuzzData) {
+ size_t len = static_cast<size_t>(env->GetArrayLength(fuzzData));
+ uint8_t data[len];
+ env->GetByteArrayRegion(fuzzData, 0, len, reinterpret_cast<jbyte*>(data));
+
+ FuzzedDataProvider provider(data, len);
+ RandomParcelOptions options;
+
+ Parcel* parcel = parcelForJavaObject(env, jparcel);
+ fillRandomParcel(parcel, std::move(provider), &options);
+}
diff --git a/core/tests/fuzzers/FuzzService/random_parcel_jni.h b/core/tests/fuzzers/FuzzService/random_parcel_jni.h
index 20a4c9d46aa6..bc18b2ff6fc7 100644
--- a/core/tests/fuzzers/FuzzService/random_parcel_jni.h
+++ b/core/tests/fuzzers/FuzzService/random_parcel_jni.h
@@ -23,4 +23,6 @@ extern "C" {
// Function from AndroidRuntime
jint registerFrameworkNatives(JNIEnv* env);
+
+ JNIEXPORT void JNICALL Java_randomparcel_FuzzBinder_getRandomParcel(JNIEnv *env, jobject thiz, jobject parcel, jbyteArray fuzzData);
}