Loading core/tests/fuzzers/FuzzService/FuzzBinder.java +7 −0 Original line number Diff line number Diff line Loading @@ -15,6 +15,7 @@ */ package randomparcel; import android.os.IBinder; import android.os.Parcel; public class FuzzBinder { static { Loading @@ -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(); } core/tests/fuzzers/FuzzService/random_parcel_jni.cpp +14 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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); } core/tests/fuzzers/FuzzService/random_parcel_jni.h +2 −0 Original line number Diff line number Diff line Loading @@ -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); } Loading
core/tests/fuzzers/FuzzService/FuzzBinder.java +7 −0 Original line number Diff line number Diff line Loading @@ -15,6 +15,7 @@ */ package randomparcel; import android.os.IBinder; import android.os.Parcel; public class FuzzBinder { static { Loading @@ -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(); }
core/tests/fuzzers/FuzzService/random_parcel_jni.cpp +14 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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); }
core/tests/fuzzers/FuzzService/random_parcel_jni.h +2 −0 Original line number Diff line number Diff line Loading @@ -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); }