summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Devin Moore <devinmoore@google.com> 2022-11-18 18:36:30 +0000
committer Devin Moore <devinmoore@google.com> 2022-11-18 19:36:14 +0000
commit5f6ded88250a6e1322a386b5a1153f87b775f210 (patch)
tree21827c40e3eaf274b3f6482bd39dbea035e960d7
parenta3793499691e3bcb52964cdfdad3a84124839b32 (diff)
fakeservicemanager: Don't accept null binders for addService
Parity with the rest of the Service Manager APIs. Test: atest fakeservicemanager_test Bug: 259549842 Change-Id: I715590bc4c4f2f434ad93f82c2ba98d40334ef38
-rw-r--r--libs/fakeservicemanager/ServiceManager.cpp3
-rw-r--r--libs/fakeservicemanager/test_sm.cpp6
2 files changed, 9 insertions, 0 deletions
diff --git a/libs/fakeservicemanager/ServiceManager.cpp b/libs/fakeservicemanager/ServiceManager.cpp
index 480ec79725..deba724c4f 100644
--- a/libs/fakeservicemanager/ServiceManager.cpp
+++ b/libs/fakeservicemanager/ServiceManager.cpp
@@ -36,6 +36,9 @@ sp<IBinder> ServiceManager::checkService( const String16& name) const {
status_t ServiceManager::addService(const String16& name, const sp<IBinder>& service,
bool /*allowIsolated*/,
int /*dumpsysFlags*/) {
+ if (service == nullptr) {
+ return UNEXPECTED_NULL;
+ }
mNameToService[name] = service;
return NO_ERROR;
}
diff --git a/libs/fakeservicemanager/test_sm.cpp b/libs/fakeservicemanager/test_sm.cpp
index 71e5abe126..4ddbe0cf81 100644
--- a/libs/fakeservicemanager/test_sm.cpp
+++ b/libs/fakeservicemanager/test_sm.cpp
@@ -50,6 +50,12 @@ TEST(AddService, HappyHappy) {
IServiceManager::DUMP_FLAG_PRIORITY_DEFAULT), OK);
}
+TEST(AddService, SadNullBinder) {
+ auto sm = new ServiceManager();
+ EXPECT_EQ(sm->addService(String16("foo"), nullptr, false /*allowIsolated*/,
+ IServiceManager::DUMP_FLAG_PRIORITY_DEFAULT), android::UNEXPECTED_NULL);
+}
+
TEST(AddService, HappyOverExistingService) {
auto sm = new ServiceManager();
EXPECT_EQ(sm->addService(String16("foo"), getBinder(), false /*allowIsolated*/,