summaryrefslogtreecommitdiff
path: root/libs/binder/BackendUnifiedServiceManager.cpp
diff options
context:
space:
mode:
author Alice Wang <aliceywang@google.com> 2025-01-08 08:59:49 +0000
committer Alice Wang <aliceywang@google.com> 2025-01-09 05:39:11 -0800
commit0aa07a1179c27192a99daf76579652413f840018 (patch)
tree9a01f4b6576ecf9cf36558cc8836fdeb6201eb2a /libs/binder/BackendUnifiedServiceManager.cpp
parent87a06b7f8a3ed0c994fbf32c981f030227d21254 (diff)
[getService] Only set binder when getService2() succeeds
To avoid crashing in the getService() call. Bug: 387175643 Test: atest servicemanager_test Change-Id: I8617e748fdb85e96ded4c59b5c7785be20de05ee
Diffstat (limited to 'libs/binder/BackendUnifiedServiceManager.cpp')
-rw-r--r--libs/binder/BackendUnifiedServiceManager.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/libs/binder/BackendUnifiedServiceManager.cpp b/libs/binder/BackendUnifiedServiceManager.cpp
index 4220cdd0e8..7c0319aead 100644
--- a/libs/binder/BackendUnifiedServiceManager.cpp
+++ b/libs/binder/BackendUnifiedServiceManager.cpp
@@ -215,7 +215,9 @@ Status BackendUnifiedServiceManager::getService(const ::std::string& name,
sp<IBinder>* _aidl_return) {
os::Service service;
Status status = getService2(name, &service);
- *_aidl_return = service.get<os::Service::Tag::serviceWithMetadata>().service;
+ if (status.isOk()) {
+ *_aidl_return = service.get<os::Service::Tag::serviceWithMetadata>().service;
+ }
return status;
}