summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Martijn Coenen <maco@google.com> 2012-11-30 11:09:43 -0800
committer Android Git Automerger <android-git-automerger@android.com> 2012-11-30 11:09:43 -0800
commitf77445cd48f9174647c4c7ff539036b5aa08ce6e (patch)
treec6a94cfb481e451871db4ec4b2ace7a139e31a8e
parent1bd7d5e47ed7e73c244b79c5a92d6af1e3e89266 (diff)
parentb1a01ab01c2aa5136f7781c3a6ec682590e38ac4 (diff)
am b1a01ab0: Merge "Allow the NFC process to call Bluetooth APIs." into jb-mr1.1-dev
* commit 'b1a01ab01c2aa5136f7781c3a6ec682590e38ac4': Allow the NFC process to call Bluetooth APIs.
-rwxr-xr-xservices/java/com/android/server/BluetoothManagerService.java12
1 files changed, 8 insertions, 4 deletions
diff --git a/services/java/com/android/server/BluetoothManagerService.java b/services/java/com/android/server/BluetoothManagerService.java
index e05fcf4d408b..5d83f00b4469 100755
--- a/services/java/com/android/server/BluetoothManagerService.java
+++ b/services/java/com/android/server/BluetoothManagerService.java
@@ -43,8 +43,6 @@ import android.os.SystemClock;
import android.os.UserHandle;
import android.provider.Settings;
import android.util.Log;
-import java.util.ArrayList;
-import java.util.List;
class BluetoothManagerService extends IBluetoothManager.Stub {
private static final String TAG = "BluetoothManagerService";
private static final boolean DBG = true;
@@ -330,9 +328,12 @@ class BluetoothManagerService extends IBluetoothManager.Stub {
Log.d(TAG,"enableNoAutoConnect(): mBluetooth =" + mBluetooth +
" mBinding = " + mBinding);
}
- if (Binder.getCallingUid() != Process.NFC_UID) {
+ int callingAppId = UserHandle.getAppId(Binder.getCallingUid());
+
+ if (callingAppId != Process.NFC_UID) {
throw new SecurityException("no permission to enable Bluetooth quietly");
}
+
Message msg = mHandler.obtainMessage(MESSAGE_ENABLE);
msg.arg1=0; //No persist
msg.arg2=1; //Quiet mode
@@ -968,11 +969,14 @@ class BluetoothManagerService extends IBluetoothManager.Stub {
private boolean checkIfCallerIsForegroundUser() {
int foregroundUser;
int callingUser = UserHandle.getCallingUserId();
+ int callingUid = Binder.getCallingUid();
long callingIdentity = Binder.clearCallingIdentity();
+ int callingAppId = UserHandle.getAppId(callingUid);
boolean valid = false;
try {
foregroundUser = ActivityManager.getCurrentUser();
- valid = (callingUser == foregroundUser);
+ valid = (callingUser == foregroundUser) ||
+ callingAppId == Process.NFC_UID;
if (DBG) {
Log.d(TAG, "checkIfCallerIsForegroundUser: valid=" + valid
+ " callingUser=" + callingUser