Loading core/jni/android_os_HwBinder.cpp +17 −2 Original line number Diff line number Diff line Loading @@ -224,6 +224,21 @@ status_t JHwBinder::onTransact( return err; } bool validateCanUseHwBinder(const sp<hardware::IBinder>& binder) { if (binder != nullptr && binder->localBinder() != nullptr) { // untested/unsupported/inefficient // see b/129150021, doesn't work with scatter-gather // // explicitly disabling until it is supported // (note, even if this is fixed to work with scatter gather, we would also need // to convert this to the Java object rather than re-wrapping with a proxy) LOG(ERROR) << "Local Java Binder not supported."; return false; } return true; } } // namespace android //////////////////////////////////////////////////////////////////////////////// Loading Loading @@ -324,9 +339,9 @@ static jobject JHwBinder_native_getService( sp<IBase> ret = getRawServiceInternal(ifaceName, serviceName, retry /* retry */, false /* getStub */); sp<hardware::IBinder> service = hardware::toBinder<hidl::base::V1_0::IBase>(ret); if (service == NULL) { if (service == nullptr || !validateCanUseHwBinder(service)) { signalExceptionForError(env, NAME_NOT_FOUND); return NULL; return nullptr; } LOG(INFO) << "HwBinder: Starting thread pool for getting: " << ifaceName << "/" << serviceName; Loading core/jni/android_os_HwBinder.h +2 −0 Original line number Diff line number Diff line Loading @@ -54,6 +54,8 @@ private: int register_android_os_HwBinder(JNIEnv *env); bool validateCanUseHwBinder(const sp<hardware::IBinder>& binder); } // namespace android #endif // _ANDROID_OS_HW_BINDER_H Loading core/jni/android_os_HwParcel.cpp +6 −2 Original line number Diff line number Diff line Loading @@ -883,8 +883,12 @@ static jobject JHwParcel_native_readStrongBinder(JNIEnv *env, jobject thiz) { sp<hardware::IBinder> binder = parcel->readStrongBinder(); if (binder == NULL) { return NULL; if (binder == nullptr) { return nullptr; } if (!validateCanUseHwBinder(binder)) { return nullptr; } return JHwRemoteBinder::NewObject(env, binder); Loading Loading
core/jni/android_os_HwBinder.cpp +17 −2 Original line number Diff line number Diff line Loading @@ -224,6 +224,21 @@ status_t JHwBinder::onTransact( return err; } bool validateCanUseHwBinder(const sp<hardware::IBinder>& binder) { if (binder != nullptr && binder->localBinder() != nullptr) { // untested/unsupported/inefficient // see b/129150021, doesn't work with scatter-gather // // explicitly disabling until it is supported // (note, even if this is fixed to work with scatter gather, we would also need // to convert this to the Java object rather than re-wrapping with a proxy) LOG(ERROR) << "Local Java Binder not supported."; return false; } return true; } } // namespace android //////////////////////////////////////////////////////////////////////////////// Loading Loading @@ -324,9 +339,9 @@ static jobject JHwBinder_native_getService( sp<IBase> ret = getRawServiceInternal(ifaceName, serviceName, retry /* retry */, false /* getStub */); sp<hardware::IBinder> service = hardware::toBinder<hidl::base::V1_0::IBase>(ret); if (service == NULL) { if (service == nullptr || !validateCanUseHwBinder(service)) { signalExceptionForError(env, NAME_NOT_FOUND); return NULL; return nullptr; } LOG(INFO) << "HwBinder: Starting thread pool for getting: " << ifaceName << "/" << serviceName; Loading
core/jni/android_os_HwBinder.h +2 −0 Original line number Diff line number Diff line Loading @@ -54,6 +54,8 @@ private: int register_android_os_HwBinder(JNIEnv *env); bool validateCanUseHwBinder(const sp<hardware::IBinder>& binder); } // namespace android #endif // _ANDROID_OS_HW_BINDER_H Loading
core/jni/android_os_HwParcel.cpp +6 −2 Original line number Diff line number Diff line Loading @@ -883,8 +883,12 @@ static jobject JHwParcel_native_readStrongBinder(JNIEnv *env, jobject thiz) { sp<hardware::IBinder> binder = parcel->readStrongBinder(); if (binder == NULL) { return NULL; if (binder == nullptr) { return nullptr; } if (!validateCanUseHwBinder(binder)) { return nullptr; } return JHwRemoteBinder::NewObject(env, binder); Loading