mediaresourcemanager: verify the input calling pid
Bug: 26830615
Change-Id: I2e9c579b3bdd86a90b08fa161206d32527390bb5
diff --git a/media/libmediaplayerservice/tests/DrmSessionManager_test.cpp b/media/libmediaplayerservice/tests/DrmSessionManager_test.cpp
index de350a1..ef4c833 100644
--- a/media/libmediaplayerservice/tests/DrmSessionManager_test.cpp
+++ b/media/libmediaplayerservice/tests/DrmSessionManager_test.cpp
@@ -39,6 +39,10 @@
return true;
}
+ virtual bool isValidPid(int /* pid */) {
+ return true;
+ }
+
private:
DISALLOW_EVIL_CONSTRUCTORS(FakeProcessInfo);
};
diff --git a/media/libstagefright/ProcessInfo.cpp b/media/libstagefright/ProcessInfo.cpp
index 353f108..27f1a79 100644
--- a/media/libstagefright/ProcessInfo.cpp
+++ b/media/libstagefright/ProcessInfo.cpp
@@ -20,6 +20,7 @@
#include <media/stagefright/ProcessInfo.h>
+#include <binder/IPCThreadState.h>
#include <binder/IProcessInfoService.h>
#include <binder/IServiceManager.h>
@@ -52,6 +53,12 @@
return true;
}
+bool ProcessInfo::isValidPid(int pid) {
+ int callingPid = IPCThreadState::self()->getCallingPid();
+ // Trust it if this is called from the same process otherwise pid has to match the calling pid.
+ return (callingPid == getpid()) || (callingPid == pid);
+}
+
ProcessInfo::~ProcessInfo() {}
} // namespace android