transcoding: trust MediaProvider to set uid for jobs
bug: 154733526
test: manually check that MediaProvider uid is obtained
successfully, and isTrustedCallingUid() is true
Change-Id: I5577adcfc1acdac343ec3d98a1e33a9fc2fe36d6
diff --git a/media/libmediatranscoding/TranscodingUidPolicy.cpp b/media/libmediatranscoding/TranscodingUidPolicy.cpp
index f0d4945..9763921 100644
--- a/media/libmediatranscoding/TranscodingUidPolicy.cpp
+++ b/media/libmediatranscoding/TranscodingUidPolicy.cpp
@@ -24,7 +24,9 @@
#include <android/content/pm/IPackageManagerNative.h>
#include <binder/ActivityManager.h>
#include <binder/IServiceManager.h>
+#include <binder/PermissionController.h>
#include <cutils/misc.h> // FIRST_APPLICATION_UID
+#include <cutils/multiuser.h>
#include <inttypes.h>
#include <media/TranscodingUidPolicy.h>
#include <utils/Log.h>
@@ -133,6 +135,19 @@
return true;
}
+//static
+status_t TranscodingUidPolicy::getUidForPackage(String16 packageName, /*inout*/ uid_t& uid) {
+ PermissionController pc;
+ uid = pc.getPackageUid(packageName, 0);
+ if (uid <= 0) {
+ ALOGE("Unknown package: '%s'", String8(packageName).string());
+ return BAD_VALUE;
+ }
+
+ uid = multiuser_get_uid(0 /*userId*/, uid);
+ return NO_ERROR;
+}
+
TranscodingUidPolicy::TranscodingUidPolicy()
: mAm(std::make_shared<ActivityManager>()),
mUidObserver(new UidObserver(this)),