From: Yao Chen Date: Fri, 17 Nov 2017 17:44:40 +0000 (-0800) Subject: fix the permission check crash in statsd. X-Git-Tag: android-x86-9.0-r1~321^2~24^2 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=7ee94150ab5ad435d8dd4e9715a5547e16863292;p=android-x86%2Fframeworks-base.git fix the permission check crash in statsd. And change the fake config uid to be 1000, so we can dump it from the test app. Test: manual Change-Id: I99b4cd28b351add8cf3e315e1dccf8cf511a0be8 --- diff --git a/cmds/statsd/src/StatsService.cpp b/cmds/statsd/src/StatsService.cpp index a0b234087fd0..dfe4ecaf1bea 100644 --- a/cmds/statsd/src/StatsService.cpp +++ b/cmds/statsd/src/StatsService.cpp @@ -543,9 +543,7 @@ void StatsService::OnLogEvent(const LogEvent& event) { Status StatsService::getData(const String16& key, vector* output) { IPCThreadState* ipc = IPCThreadState::self(); - if (checkCallingPermission(String16(kPermissionDump), - reinterpret_cast(ipc->getCallingPid()), - reinterpret_cast(ipc->getCallingUid()))) { + if (checkCallingPermission(String16(kPermissionDump))) { // TODO: Implement this. return Status::ok(); } else { @@ -559,8 +557,7 @@ Status StatsService::addConfiguration(const String16& key, bool* success) { IPCThreadState* ipc = IPCThreadState::self(); int32_t* uid = reinterpret_cast(ipc->getCallingUid()); - if (checkCallingPermission(String16(kPermissionDump), - reinterpret_cast(ipc->getCallingPid()), uid)) { + if (checkCallingPermission(String16(kPermissionDump))) { string keyString = string(String8(key).string()); ConfigKey configKey(*uid, keyString); StatsdConfig cfg; @@ -577,9 +574,7 @@ Status StatsService::addConfiguration(const String16& key, Status StatsService::removeConfiguration(const String16& key, bool* success) { IPCThreadState* ipc = IPCThreadState::self(); - if (checkCallingPermission(String16(kPermissionDump), - reinterpret_cast(ipc->getCallingPid()), - reinterpret_cast(ipc->getCallingUid()))) { + if (checkCallingPermission(String16(kPermissionDump))) { // TODO: Implement this. return Status::ok(); } else { diff --git a/cmds/statsd/src/config/ConfigManager.cpp b/cmds/statsd/src/config/ConfigManager.cpp index a9ce4a337590..2e6edfef556e 100644 --- a/cmds/statsd/src/config/ConfigManager.cpp +++ b/cmds/statsd/src/config/ConfigManager.cpp @@ -39,7 +39,7 @@ void ConfigManager::Startup() { // Instead, we'll just make a fake one. // this should be called from StatsService when it receives a statsd_config - UpdateConfig(ConfigKey(0, "fake"), build_fake_config()); + UpdateConfig(ConfigKey(1000, "fake"), build_fake_config()); } void ConfigManager::AddListener(const sp& listener) {