summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTri Vo <trong@google.com>2019-03-27 17:15:48 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2019-03-27 17:15:48 +0000
commit4f42ac79893080c0b4e5b2d8b01a2c7feb7bc680 (patch)
treed8bd391b69d139864072345cfcbac127bc4243a5
parentdc0fc79c74de3583c55629c12fe787fa56803033 (diff)
parenta526f3d41640506ebd457c2ed91b923d6f187d0b (diff)
downloadashmemd-4f42ac79893080c0b4e5b2d8b01a2c7feb7bc680.tar.gz
Merge "Reland 'Check /dev/binder access before calling defaultServiceManager()'"
-rw-r--r--ashmemd_client.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/ashmemd_client.cpp b/ashmemd_client.cpp
index 3380209..04227ba 100644
--- a/ashmemd_client.cpp
+++ b/ashmemd_client.cpp
@@ -28,6 +28,11 @@ namespace android {
namespace ashmemd {
sp<IAshmemDeviceService> getAshmemService() {
+ // Calls to defaultServiceManager() crash the process if it doesn't have appropriate
+ // binder permissions. Check these permissions proactively.
+ if (access("/dev/binder", R_OK | W_OK) != 0) {
+ return nullptr;
+ }
sp<IServiceManager> sm = android::defaultServiceManager();
sp<IBinder> binder = sm->checkService(String16("ashmem_device_service"));
return interface_cast<IAshmemDeviceService>(binder);