OSDN Git Service

BT API security audit: fix a couple of permission mistakes.
authorNick Pelly <npelly@google.com>
Thu, 8 Oct 2009 21:27:28 +0000 (23:27 +0200)
committerNick Pelly <npelly@google.com>
Thu, 8 Oct 2009 23:35:10 +0000 (01:35 +0200)
Make functions that are meant to be BLUETOOTH_ADMIN really
BLUETOOTH_ADMIN.

Add some missing javadoc for permissions.

The only functional change here is the BLUETOOTH->BLUETOOTH_ADMIN
changes. This is super safe because every system app that uses BT
has both permissions.

Change-Id: Iddc61f9fd5d81fe0171358665a0fa52f2fa02871
DrNo: eastham
Joke: How do you catch a rabbit? Hide behind a tree and make carrott noises.

core/java/android/bluetooth/BluetoothAdapter.java
core/java/android/bluetooth/BluetoothDevice.java
core/java/android/server/BluetoothService.java

index cc35b7d..5b34ef9 100644 (file)
@@ -569,6 +569,7 @@ public final class BluetoothAdapter {
      * <p>Applications can also register for {@link #ACTION_DISCOVERY_STARTED}
      * or {@link #ACTION_DISCOVERY_FINISHED} to be notified when discovery
      * starts or completes.
+     * <p>Requires {@link android.Manifest.permission#BLUETOOTH}.
      *
      * @return true if discovering
      */
@@ -582,6 +583,7 @@ public final class BluetoothAdapter {
     /**
      * Return the set of {@link BluetoothDevice} objects that are bonded
      * (paired) to the local adapter.
+     * <p>Requires {@link android.Manifest.permission#BLUETOOTH}.
      *
      * @return unmodifiable set of {@link BluetoothDevice}, or null on error
      */
index 39a74ac..849e6c7 100644 (file)
@@ -513,6 +513,7 @@ public final class BluetoothDevice implements Parcelable {
 
     /**
      * Get trust state of a remote device.
+     * <p>Requires {@link android.Manifest.permission#BLUETOOTH}.
      * @hide
      */
     public boolean getTrustState() {
@@ -526,6 +527,7 @@ public final class BluetoothDevice implements Parcelable {
 
     /**
      * Set trust state for a remote device.
+     * <p>Requires {@link android.Manifest.permission#BLUETOOTH_ADMIN}.
      * @param value the trust state value (true or false)
      * @hide
      */
@@ -657,6 +659,8 @@ public final class BluetoothDevice implements Parcelable {
      * Call #connect on the returned #BluetoothSocket to begin the connection.
      * The remote device will not be authenticated and communication on this
      * socket will not be encrypted.
+     * <p>Requires {@link android.Manifest.permission#BLUETOOTH_ADMIN}
+     *
      * @param port    remote port
      * @return An RFCOMM BluetoothSocket
      * @throws IOException On error, for example Bluetooth not available, or
@@ -671,6 +675,8 @@ public final class BluetoothDevice implements Parcelable {
     /**
      * Construct a SCO socket ready to start an outgoing connection.
      * Call #connect on the returned #BluetoothSocket to begin the connection.
+     * <p>Requires {@link android.Manifest.permission#BLUETOOTH_ADMIN}
+     *
      * @return a SCO BluetoothSocket
      * @throws IOException on error, for example Bluetooth not available, or
      *                     insufficient permissions.
index 7ebd91d..f0bd249 100644 (file)
@@ -191,10 +191,10 @@ public class BluetoothService extends IBluetooth.Stub {
     /**
      * Bring down bluetooth. Returns true on success.
      *
-     * @param saveSetting If true, disable BT in settings
+     * @param saveSetting If true, persist the new setting
      */
     public synchronized boolean disable(boolean saveSetting) {
-        mContext.enforceCallingOrSelfPermission(BLUETOOTH_PERM, "Need BLUETOOTH permission");
+        mContext.enforceCallingOrSelfPermission(BLUETOOTH_ADMIN_PERM, "Need BLUETOOTH_ADMIN permission");
 
         switch (mBluetoothState) {
         case BluetoothAdapter.STATE_OFF:
@@ -1013,7 +1013,8 @@ public class BluetoothService extends IBluetooth.Stub {
      */
     public synchronized boolean setTrust(String address, boolean value) {
         if (!BluetoothAdapter.checkBluetoothAddress(address)) {
-            mContext.enforceCallingOrSelfPermission(BLUETOOTH_PERM, "Need BLUETOOTH permission");
+            mContext.enforceCallingOrSelfPermission(BLUETOOTH_ADMIN_PERM,
+                    "Need BLUETOOTH_ADMIN permission");
             return false;
         }