Merge "Handle JavaBBinderHolder not init w/ mockito" am: 9590eb1815

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/2250555

Change-Id: I9e3204ebc6c55740f87b3a4ae89add6812fdc495
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Steven Moreland
2022-10-12 17:13:34 +00:00
committed by Automerger Merge Worker
2 changed files with 16 additions and 1 deletions

View File

@@ -101,9 +101,18 @@ static void android_os_Parcel_markSensitive(jlong nativePtr)
static void android_os_Parcel_markForBinder(JNIEnv* env, jclass clazz, jlong nativePtr,
jobject binder)
{
LOG_ALWAYS_FATAL_IF(binder == nullptr, "Null binder specified for markForBinder");
Parcel* parcel = reinterpret_cast<Parcel*>(nativePtr);
if (parcel) {
parcel->markForBinder(ibinderForJavaObject(env, binder));
sp<IBinder> nBinder = ibinderForJavaObject(env, binder);
if (nBinder == nullptr) {
ALOGE("Native binder in markForBinder is null for non-null jobject");
return;
}
parcel->markForBinder(nBinder);
}
}

View File

@@ -798,6 +798,12 @@ sp<IBinder> ibinderForJavaObject(JNIEnv* env, jobject obj)
if (env->IsInstanceOf(obj, gBinderOffsets.mClass)) {
JavaBBinderHolder* jbh = (JavaBBinderHolder*)
env->GetLongField(obj, gBinderOffsets.mObject);
if (jbh == nullptr) {
ALOGE("JavaBBinderHolder null on binder");
return nullptr;
}
return jbh->get(env, obj);
}