summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Frederick Mayle <fmayle@google.com> 2022-06-23 23:42:08 +0000
committer Frederick Mayle <fmayle@google.com> 2022-06-27 18:56:01 +0000
commitae9deebc5282130e7cd84f146b97fdbd9fb71b88 (patch)
tree0e8c03383aa79d8b1b164273ea3104612506e2e2
parent332a29a57f332773e6eb44e404f0c55d1888f2eb (diff)
libbinder: Add test for null non-nullable binder return
Test: atest binderRpcTest Change-Id: If10aac2b040f5de53516528821c6623c4b528cb8
-rw-r--r--libs/binder/tests/IBinderRpcTest.aidl3
-rw-r--r--libs/binder/tests/binderRpcTest.cpp11
2 files changed, 14 insertions, 0 deletions
diff --git a/libs/binder/tests/IBinderRpcTest.aidl b/libs/binder/tests/IBinderRpcTest.aidl
index fdd02a4435..2deea82cf9 100644
--- a/libs/binder/tests/IBinderRpcTest.aidl
+++ b/libs/binder/tests/IBinderRpcTest.aidl
@@ -24,6 +24,9 @@ interface IBinderRpcTest {
// number of known RPC binders to process, RpcState::countBinders by session
int[] countBinders();
+ // Return a null binder with a non-nullable return type.
+ IBinder getNullBinder();
+
// Caller sends server, callee pings caller's server and returns error code.
int pingMe(IBinder binder);
@nullable IBinder repeatBinder(@nullable IBinder binder);
diff --git a/libs/binder/tests/binderRpcTest.cpp b/libs/binder/tests/binderRpcTest.cpp
index 51614698a0..141fa38114 100644
--- a/libs/binder/tests/binderRpcTest.cpp
+++ b/libs/binder/tests/binderRpcTest.cpp
@@ -202,6 +202,10 @@ public:
}
return Status::ok();
}
+ Status getNullBinder(sp<IBinder>* out) override {
+ out->clear();
+ return Status::ok();
+ }
Status pingMe(const sp<IBinder>& binder, int32_t* out) override {
if (binder == nullptr) {
std::cout << "Received null binder!" << std::endl;
@@ -802,6 +806,13 @@ TEST_P(BinderRpc, SendAndGetResultBackBig) {
EXPECT_EQ(single + single, doubled);
}
+TEST_P(BinderRpc, InvalidNullBinderReturn) {
+ auto proc = createRpcTestSocketServerProcess({});
+
+ sp<IBinder> outBinder;
+ EXPECT_EQ(proc.rootIface->getNullBinder(&outBinder).transactionError(), UNEXPECTED_NULL);
+}
+
TEST_P(BinderRpc, CallMeBack) {
auto proc = createRpcTestSocketServerProcess({});