mirror of
https://github.com/Evolution-X/hardware_interfaces
synced 2026-02-01 11:36:00 +00:00
Check if AIDL service is declared before calling wait
If bootctl AIDL service is not installed and we call waitForService, caller will block indefinitely. So check with AServiceManager_isDeclared before calling waitForService. Test: th Bug: 227536004 Change-Id: I551040b222c6c9127fe79aceb36bb3d69b52c3b6
This commit is contained in:
@@ -327,9 +327,14 @@ std::unique_ptr<BootControlClient> BootControlClient::WaitForService() {
|
||||
const auto instance_name =
|
||||
std::string(::aidl::android::hardware::boot::IBootControl::descriptor) + "/default";
|
||||
|
||||
if (auto module = ::aidl::android::hardware::boot::IBootControl::fromBinder(
|
||||
if (AServiceManager_isDeclared(instance_name.c_str())) {
|
||||
auto module = ::aidl::android::hardware::boot::IBootControl::fromBinder(
|
||||
ndk::SpAIBinder(AServiceManager_waitForService(instance_name.c_str())));
|
||||
module != nullptr) {
|
||||
if (module == nullptr) {
|
||||
LOG(ERROR) << "AIDL " << instance_name
|
||||
<< " is declared but waitForService returned nullptr.";
|
||||
return nullptr;
|
||||
}
|
||||
LOG(INFO) << "Using AIDL version of IBootControl";
|
||||
return std::make_unique<BootControlClientAidl>(module);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user