diff --git a/core/jni/android_os_HwBinder.cpp b/core/jni/android_os_HwBinder.cpp index 2ae4a17c00a68..95e031bd96d8b 100644 --- a/core/jni/android_os_HwBinder.cpp +++ b/core/jni/android_os_HwBinder.cpp @@ -242,9 +242,19 @@ static void JHwBinder_native_registerService( using android::hidl::manager::V1_0::IServiceManager; sp binder = JHwBinder::GetNativeContext(env, thiz); + /* TODO(b/33440494) this is not right */ sp base = new hidl::base::V1_0::BpBase(binder); - bool ok = hardware::defaultServiceManager()->add( + + auto manager = hardware::defaultServiceManager(); + + if (manager == nullptr) { + LOG(ERROR) << "Could not get hwservicemanager."; + signalExceptionForError(env, UNKNOWN_ERROR); + return; + } + + bool ok = manager->add( interfaceChain, serviceName, base); @@ -289,8 +299,16 @@ static jobject JHwBinder_native_getService( << serviceName << "'"; + auto manager = hardware::defaultServiceManager(); + + if (manager == nullptr) { + LOG(ERROR) << "Could not get hwservicemanager."; + signalExceptionForError(env, UNKNOWN_ERROR); + return NULL; + } + sp service; - hardware::defaultServiceManager()->get( + manager->get( ifaceName, serviceName, [&service](sp out) {