From 2ae5c735b6474951b0e3185bdbf5f6c4935597d2 Mon Sep 17 00:00:00 2001 From: Andrew Cheng Date: Mon, 18 Apr 2022 17:21:57 -0700 Subject: [PATCH] Remove UserId from UID when checking against BLUETOOTH_UID A UID can be a concatenation of a UserID with a 5 digit package UID. E.g., Bluetooth under User10 would have UID 1001002. This CL removes the UserID (if any), before checking against BLUETOOTH_UID. Bug: 228598338 Test: m Change-Id: I532583345cc9ab474fc848a3ede6be9d8be9c5b0 --- service/src/com/android/server/ConnectivityService.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/service/src/com/android/server/ConnectivityService.java b/service/src/com/android/server/ConnectivityService.java index a0e75ec048..fcb22c9cbc 100644 --- a/service/src/com/android/server/ConnectivityService.java +++ b/service/src/com/android/server/ConnectivityService.java @@ -2865,7 +2865,7 @@ public class ConnectivityService extends IConnectivityManager.Stub private void enforceNetworkFactoryPermission() { // TODO: Check for the BLUETOOTH_STACK permission once that is in the API surface. - if (getCallingUid() == Process.BLUETOOTH_UID) return; + if (UserHandle.getAppId(getCallingUid()) == Process.BLUETOOTH_UID) return; enforceAnyPermissionOf( android.Manifest.permission.NETWORK_FACTORY, NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK); @@ -2873,7 +2873,7 @@ public class ConnectivityService extends IConnectivityManager.Stub private void enforceNetworkFactoryOrSettingsPermission() { // TODO: Check for the BLUETOOTH_STACK permission once that is in the API surface. - if (getCallingUid() == Process.BLUETOOTH_UID) return; + if (UserHandle.getAppId(getCallingUid()) == Process.BLUETOOTH_UID) return; enforceAnyPermissionOf( android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_FACTORY, @@ -2882,7 +2882,7 @@ public class ConnectivityService extends IConnectivityManager.Stub private void enforceNetworkFactoryOrTestNetworksPermission() { // TODO: Check for the BLUETOOTH_STACK permission once that is in the API surface. - if (getCallingUid() == Process.BLUETOOTH_UID) return; + if (UserHandle.getAppId(getCallingUid()) == Process.BLUETOOTH_UID) return; enforceAnyPermissionOf( android.Manifest.permission.MANAGE_TEST_NETWORKS, android.Manifest.permission.NETWORK_FACTORY, @@ -2896,7 +2896,7 @@ public class ConnectivityService extends IConnectivityManager.Stub android.Manifest.permission.NETWORK_SETTINGS, pid, uid) || PERMISSION_GRANTED == mContext.checkPermission( NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, pid, uid) - || uid == Process.BLUETOOTH_UID; + || UserHandle.getAppId(uid) == Process.BLUETOOTH_UID; } private boolean checkSettingsPermission() {