diff options
| author | 2022-12-03 04:50:08 +0000 | |
|---|---|---|
| committer | 2022-12-03 04:50:08 +0000 | |
| commit | 373ab1fab6f8e6f7f2262f13c995f45b0da2a3e2 (patch) | |
| tree | d4e99adce1ad534ac689e2f6e6ba6d8fae088844 | |
| parent | b55d142b238ecf16db75e310327646132f8fa6ca (diff) | |
| parent | b44ed765ab6f79ecac78669e35e9676c8a96207d (diff) | |
Merge "Adding JNI for create random parcel"
| -rw-r--r-- | core/tests/fuzzers/FuzzService/FuzzBinder.java | 7 | ||||
| -rw-r--r-- | core/tests/fuzzers/FuzzService/random_parcel_jni.cpp | 14 | ||||
| -rw-r--r-- | core/tests/fuzzers/FuzzService/random_parcel_jni.h | 2 |
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); } |