Merge "Handle JavaBBinderHolder not init w/ mockito"

This commit is contained in:
Steven Moreland
2022-10-12 16:43:06 +00:00
committed by Gerrit Code Review
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, static void android_os_Parcel_markForBinder(JNIEnv* env, jclass clazz, jlong nativePtr,
jobject binder) jobject binder)
{ {
LOG_ALWAYS_FATAL_IF(binder == nullptr, "Null binder specified for markForBinder");
Parcel* parcel = reinterpret_cast<Parcel*>(nativePtr); Parcel* parcel = reinterpret_cast<Parcel*>(nativePtr);
if (parcel) { 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)) { if (env->IsInstanceOf(obj, gBinderOffsets.mClass)) {
JavaBBinderHolder* jbh = (JavaBBinderHolder*) JavaBBinderHolder* jbh = (JavaBBinderHolder*)
env->GetLongField(obj, gBinderOffsets.mObject); env->GetLongField(obj, gBinderOffsets.mObject);
if (jbh == nullptr) {
ALOGE("JavaBBinderHolder null on binder");
return nullptr;
}
return jbh->get(env, obj); return jbh->get(env, obj);
} }