transcoding: Add permission check in addClient.
This is used to allow only MediaProvider access the media transcoding
service.
Bug: 179496636
Test: atest CtsMediaTranscodingTestCases:MediaTranscodeManagerTest
Change-Id: If38e7d2283631e2e174af657ab0b409c77c3ff26
diff --git a/media/libmediatranscoding/TranscodingClientManager.cpp b/media/libmediatranscoding/TranscodingClientManager.cpp
index b6a2381..76bb33e 100644
--- a/media/libmediatranscoding/TranscodingClientManager.cpp
+++ b/media/libmediatranscoding/TranscodingClientManager.cpp
@@ -315,6 +315,15 @@
status_t TranscodingClientManager::addClient(
const std::shared_ptr<ITranscodingClientCallback>& callback, const std::string& clientName,
const std::string& opPackageName, std::shared_ptr<ITranscodingClient>* outClient) {
+ int32_t callingPid = AIBinder_getCallingPid();
+ int32_t callingUid = AIBinder_getCallingUid();
+
+ // Check if client has the permission
+ if (!isTrustedCaller(callingPid, callingUid)) {
+ ALOGE("addClient rejected (clientPid %d, clientUid %d)", callingPid, callingUid);
+ return IMediaTranscodingService::ERROR_PERMISSION_DENIED;
+ }
+
// Validate the client.
if (callback == nullptr || clientName.empty() || opPackageName.empty()) {
ALOGE("Invalid client");