summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2023-01-05 12:49:00 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2023-01-05 12:49:00 +0000
commit6b9c2948e045313cb377ddd718d20cf02f3145cb (patch)
treea87253b231181e59357e8949426f37a6b077eabb
parentaa757543f4b1db43213f52a55a1244546fecedeb (diff)
parentc5944b179e2fc98aa5fca114ccc49276b0b9566c (diff)
Merge changes I66723a00,I07f8182d
* changes: Enforce MEDIA_CONTENT_CONTROL in verifyPackageName Simplify if/else branch in MR2ServiceImpl
-rw-r--r--media/java/android/media/IMediaRouterService.aidl3
-rw-r--r--media/java/android/media/MediaRouter2.java6
-rw-r--r--services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java33
-rw-r--r--services/core/java/com/android/server/media/MediaRouterService.java10
4 files changed, 19 insertions, 33 deletions
diff --git a/media/java/android/media/IMediaRouterService.aidl b/media/java/android/media/IMediaRouterService.aidl
index f6a9162cda39..aa7e4df18186 100644
--- a/media/java/android/media/IMediaRouterService.aidl
+++ b/media/java/android/media/IMediaRouterService.aidl
@@ -50,8 +50,7 @@ interface IMediaRouterService {
// MediaRouterService.java for readability.
// Methods for MediaRouter2
- boolean verifyPackageName(String clientPackageName);
- void enforceMediaContentControlPermission();
+ boolean verifyPackageExists(String clientPackageName);
List<MediaRoute2Info> getSystemRoutes();
RoutingSessionInfo getSystemSessionInfo();
diff --git a/media/java/android/media/MediaRouter2.java b/media/java/android/media/MediaRouter2.java
index 5faa794151b1..fa74a9f12d7c 100644
--- a/media/java/android/media/MediaRouter2.java
+++ b/media/java/android/media/MediaRouter2.java
@@ -208,9 +208,9 @@ public final class MediaRouter2 {
IMediaRouterService.Stub.asInterface(
ServiceManager.getService(Context.MEDIA_ROUTER_SERVICE));
try {
- // SecurityException will be thrown if there's no permission.
- serviceBinder.enforceMediaContentControlPermission();
- if (!serviceBinder.verifyPackageName(clientPackageName)) {
+ // verifyPackageExists throws SecurityException if the caller doesn't hold
+ // MEDIA_CONTENT_CONTROL permission.
+ if (!serviceBinder.verifyPackageExists(clientPackageName)) {
Log.e(TAG, "Package " + clientPackageName + " not found. Ignoring.");
return null;
}
diff --git a/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java b/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java
index 15586c4a055e..cc485baef0c9 100644
--- a/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java
+++ b/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java
@@ -169,10 +169,17 @@ class MediaRouter2ServiceImpl {
// Start of methods that implement MediaRouter2 operations.
@NonNull
- public boolean verifyPackageName(@NonNull String clientPackageName) {
+ public boolean verifyPackageExists(@NonNull String clientPackageName) {
+ final int pid = Binder.getCallingPid();
+ final int uid = Binder.getCallingUid();
final long token = Binder.clearCallingIdentity();
try {
+ mContext.enforcePermission(
+ Manifest.permission.MEDIA_CONTENT_CONTROL,
+ pid,
+ uid,
+ "Must hold MEDIA_CONTENT_CONTROL permission.");
PackageManager pm = mContext.getPackageManager();
pm.getPackageInfo(clientPackageName, PackageManager.PackageInfoFlags.of(0));
return true;
@@ -184,20 +191,6 @@ class MediaRouter2ServiceImpl {
}
@NonNull
- public void enforceMediaContentControlPermission() {
- final int pid = Binder.getCallingPid();
- final int uid = Binder.getCallingUid();
- final long token = Binder.clearCallingIdentity();
-
- try {
- mContext.enforcePermission(Manifest.permission.MEDIA_CONTENT_CONTROL, pid, uid,
- "Must hold MEDIA_CONTENT_CONTROL permission.");
- } finally {
- Binder.restoreCallingIdentity(token);
- }
- }
-
- @NonNull
public List<MediaRoute2Info> getSystemRoutes() {
final int uid = Binder.getCallingUid();
final int userId = UserHandle.getUserHandleForUid(uid).getIdentifier();
@@ -1959,12 +1952,12 @@ class MediaRouter2ServiceImpl {
@NonNull RoutingSessionInfo oldSession, @NonNull MediaRoute2Info route) {
try {
if (route.isSystemRoute() && !routerRecord.mHasModifyAudioRoutingPermission) {
- routerRecord.mRouter.requestCreateSessionByManager(uniqueRequestId,
- oldSession, mSystemProvider.getDefaultRoute());
- } else {
- routerRecord.mRouter.requestCreateSessionByManager(uniqueRequestId,
- oldSession, route);
+ // The router lacks permission to modify system routing, so we hide system
+ // route info from them.
+ route = mSystemProvider.getDefaultRoute();
}
+ routerRecord.mRouter.requestCreateSessionByManager(
+ uniqueRequestId, oldSession, route);
} catch (RemoteException ex) {
Slog.w(TAG, "getSessionHintsForCreatingSessionOnHandler: "
+ "Failed to request. Router probably died.", ex);
diff --git a/services/core/java/com/android/server/media/MediaRouterService.java b/services/core/java/com/android/server/media/MediaRouterService.java
index ad82e1c786e3..3ad0e44e6ea3 100644
--- a/services/core/java/com/android/server/media/MediaRouterService.java
+++ b/services/core/java/com/android/server/media/MediaRouterService.java
@@ -380,14 +380,8 @@ public final class MediaRouterService extends IMediaRouterService.Stub
// Binder call
@Override
- public boolean verifyPackageName(String clientPackageName) {
- return mService2.verifyPackageName(clientPackageName);
- }
-
- // Binder call
- @Override
- public void enforceMediaContentControlPermission() {
- mService2.enforceMediaContentControlPermission();
+ public boolean verifyPackageExists(String clientPackageName) {
+ return mService2.verifyPackageExists(clientPackageName);
}
// Binder call