OSDN Git Service

fix the permission check crash in statsd.
authorYao Chen <yaochen@google.com>
Fri, 17 Nov 2017 17:44:40 +0000 (09:44 -0800)
committerYao Chen <yaochen@google.com>
Fri, 17 Nov 2017 18:20:30 +0000 (10:20 -0800)
And change the fake config uid to be 1000, so we can dump it from the test app.

Test: manual
Change-Id: I99b4cd28b351add8cf3e315e1dccf8cf511a0be8

cmds/statsd/src/StatsService.cpp
cmds/statsd/src/config/ConfigManager.cpp

index a0b2340..dfe4eca 100644 (file)
@@ -543,9 +543,7 @@ void StatsService::OnLogEvent(const LogEvent& event) {
 
 Status StatsService::getData(const String16& key, vector<uint8_t>* output) {
     IPCThreadState* ipc = IPCThreadState::self();
-    if (checkCallingPermission(String16(kPermissionDump),
-                               reinterpret_cast<int32_t*>(ipc->getCallingPid()),
-                               reinterpret_cast<int32_t*>(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<int32_t*>(ipc->getCallingUid());
-    if (checkCallingPermission(String16(kPermissionDump),
-                               reinterpret_cast<int32_t*>(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<int32_t*>(ipc->getCallingPid()),
-                               reinterpret_cast<int32_t*>(ipc->getCallingUid()))) {
+    if (checkCallingPermission(String16(kPermissionDump))) {
         // TODO: Implement this.
         return Status::ok();
     } else {
index a9ce4a3..2e6edfe 100644 (file)
@@ -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<ConfigListener>& listener) {