diff options
author | Svet Ganov <svetoslavganov@google.com> | 2015-05-19 00:13:21 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-05-19 00:13:22 +0000 |
commit | f7b541ff749ec8336852ba781f1fa6f7abb3f6df (patch) | |
tree | de32bafec441a451c5eeda456cade47e6d3b0f75 | |
parent | 10e23977bd1aec6d833df1e8894f3a78eb0bd3cb (diff) | |
parent | 408abf7f1bec3253675d0225300d7ee39481d286 (diff) | |
download | frameworks_base-f7b541ff749ec8336852ba781f1fa6f7abb3f6df.zip frameworks_base-f7b541ff749ec8336852ba781f1fa6f7abb3f6df.tar.gz frameworks_base-f7b541ff749ec8336852ba781f1fa6f7abb3f6df.tar.bz2 |
Merge "Do not report WiFi and Bluetooth MAC addresses - framework." into mnc-dev
-rw-r--r-- | api/system-current.txt | 1 | ||||
-rw-r--r-- | core/java/android/bluetooth/BluetoothAdapter.java | 8 | ||||
-rw-r--r-- | core/res/AndroidManifest.xml | 8 | ||||
-rw-r--r-- | services/core/java/com/android/server/BluetoothManagerService.java | 11 | ||||
-rw-r--r-- | wifi/java/android/net/wifi/WifiInfo.java | 10 |
5 files changed, 34 insertions, 4 deletions
diff --git a/api/system-current.txt b/api/system-current.txt index d2e0556..26466ed 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -111,6 +111,7 @@ package android { field public static final java.lang.String INVOKE_CARRIER_SETUP = "android.permission.INVOKE_CARRIER_SETUP"; field public static final java.lang.String KILL_BACKGROUND_PROCESSES = "android.permission.KILL_BACKGROUND_PROCESSES"; field public static final java.lang.String KILL_UID = "android.permission.KILL_UID"; + field public static final java.lang.String LOCAL_MAC_ADDRESS = "android.permission.LOCAL_MAC_ADDRESS"; field public static final java.lang.String LOCATION_HARDWARE = "android.permission.LOCATION_HARDWARE"; field public static final java.lang.String LOOP_RADIO = "android.permission.LOOP_RADIO"; field public static final java.lang.String MANAGE_ACCOUNTS = "android.permission.MANAGE_ACCOUNTS"; diff --git a/core/java/android/bluetooth/BluetoothAdapter.java b/core/java/android/bluetooth/BluetoothAdapter.java index 8768f40..b22b914 100644 --- a/core/java/android/bluetooth/BluetoothAdapter.java +++ b/core/java/android/bluetooth/BluetoothAdapter.java @@ -96,6 +96,14 @@ public final class BluetoothAdapter { private static final boolean VDBG = false; /** + * Default MAC address reported to a client that does not have the + * android.permission.LOCAL_MAC_ADDRESS permission. + * + * @hide + */ + public static final String DEFAULT_MAC_ADDRESS = "02:00:00:00:00:00"; + + /** * Sentinel error value for this class. Guaranteed to not equal any other * integer constant in this class. Provided as a convenience for functions * that require a sentinel error value, for example: diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml index 608d718..595f9f0 100644 --- a/core/res/AndroidManifest.xml +++ b/core/res/AndroidManifest.xml @@ -898,7 +898,9 @@ android:label="@string/permlab_changeWimaxState" android:protectionLevel="dangerous" /> - <!-- Allows applications to act as network scorers. @hide @SystemApi--> + <!--@SystemApi Allows applications to the the local WiFi and Bluetooth MAC address. + @hide + --> <permission android:name="android.permission.SCORE_NETWORKS" android:protectionLevel="signature|system" /> @@ -2447,6 +2449,10 @@ <permission android:name="android.permission.KILL_UID" android:protectionLevel="signature" /> + <!-- Allows applications to act as network scorers. @hide @SystemApi--> + <permission android:name="android.permission.LOCAL_MAC_ADDRESS" + android:protectionLevel="signature" /> + <!-- The system process is explicitly the only one allowed to launch the confirmation UI for full backup/restore --> <uses-permission android:name="android.permission.CONFIRM_FULL_BACKUP"/> diff --git a/services/core/java/com/android/server/BluetoothManagerService.java b/services/core/java/com/android/server/BluetoothManagerService.java index f5d27f9..c46fa76 100644 --- a/services/core/java/com/android/server/BluetoothManagerService.java +++ b/services/core/java/com/android/server/BluetoothManagerService.java @@ -16,6 +16,7 @@ package com.android.server; +import android.Manifest; import android.app.ActivityManager; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothProfile; @@ -909,16 +910,22 @@ class BluetoothManagerService extends IBluetoothManager.Stub { mCallbacks.finishBroadcast(); } } + public String getAddress() { mContext.enforceCallingOrSelfPermission(BLUETOOTH_PERM, - "Need BLUETOOTH permission"); + "Need BLUETOOTH permission"); if ((Binder.getCallingUid() != Process.SYSTEM_UID) && - (!checkIfCallerIsForegroundUser())) { + (!checkIfCallerIsForegroundUser())) { Log.w(TAG,"getAddress(): not allowed for non-active and non system user"); return null; } + if (mContext.checkCallingOrSelfPermission(Manifest.permission.LOCAL_MAC_ADDRESS) + != PackageManager.PERMISSION_GRANTED) { + return BluetoothAdapter.DEFAULT_MAC_ADDRESS; + } + synchronized(mConnection) { if (mBluetooth != null) { try { diff --git a/wifi/java/android/net/wifi/WifiInfo.java b/wifi/java/android/net/wifi/WifiInfo.java index 75198e5..dbfd4ef 100644 --- a/wifi/java/android/net/wifi/WifiInfo.java +++ b/wifi/java/android/net/wifi/WifiInfo.java @@ -42,6 +42,14 @@ public class WifiInfo implements Parcelable { private static final EnumMap<SupplicantState, DetailedState> stateMap = new EnumMap<SupplicantState, DetailedState>(SupplicantState.class); + /** + * Default MAC address reported to a client that does not have the + * android.permission.LOCAL_MAC_ADDRESS permission. + * + * @hide + */ + public static final String DEFAULT_MAC_ADDRESS = "02:00:00:00:00:00"; + static { stateMap.put(SupplicantState.DISCONNECTED, DetailedState.DISCONNECTED); stateMap.put(SupplicantState.INTERFACE_DISABLED, DetailedState.DISCONNECTED); @@ -91,7 +99,7 @@ public class WifiInfo implements Parcelable { private int mFrequency; private InetAddress mIpAddress; - private String mMacAddress; + private String mMacAddress = DEFAULT_MAC_ADDRESS; /** * @hide |