summaryrefslogtreecommitdiff
path: root/framework/java/android/bluetooth/BluetoothPan.java
diff options
context:
space:
mode:
authormarkchien <markchien@google.com>2019-08-16 15:33:28 +0800
committermarkchien <markchien@google.com>2019-08-27 23:26:20 +0800
commitb6c698909a604c9d99fbce0fc539480fed7c270c (patch)
tree1469f1d0f82410c4435a787e74a80190e58757dd /framework/java/android/bluetooth/BluetoothPan.java
parented6755fa55d3dbf5426b0f8dc634d6040f9cef35 (diff)
Passing caller package name to setBluetoothTethering
This is necessary to examine caller's permission. If caller's uid is not same as passing package name, SecurityException would be throwed. This change also clear the identity before calling BluetoothPan#setBluetoothTethering() in Tethering#setBluetoothTethering. This is fine because caller already pass permission check before in ConnectivityService. See the flow below: ConnectivityManager#startTethering -> ConnectivityService#startTethering -> Tethering#startTethering -> Tethering#setBluetoothTethering -> BluetoothPan#setBluetoothTethering Bug: 134649258 Test: -build, flash, boot -atest FrameworkNetTests -manual test with bluetooth OFF/ON Change-Id: I2140398ad3bbc8076f729c843f0515c654553aaf
Diffstat (limited to 'framework/java/android/bluetooth/BluetoothPan.java')
-rw-r--r--framework/java/android/bluetooth/BluetoothPan.java8
1 files changed, 6 insertions, 2 deletions
diff --git a/framework/java/android/bluetooth/BluetoothPan.java b/framework/java/android/bluetooth/BluetoothPan.java
index fb78789ba8..cfb363a083 100644
--- a/framework/java/android/bluetooth/BluetoothPan.java
+++ b/framework/java/android/bluetooth/BluetoothPan.java
@@ -118,6 +118,8 @@ public final class BluetoothPan implements BluetoothProfile {
*/
public static final int PAN_OPERATION_SUCCESS = 1004;
+ private final Context mContext;
+
private BluetoothAdapter mAdapter;
private final BluetoothProfileConnector<IBluetoothPan> mProfileConnector =
new BluetoothProfileConnector(this, BluetoothProfile.PAN,
@@ -136,6 +138,7 @@ public final class BluetoothPan implements BluetoothProfile {
@UnsupportedAppUsage
/*package*/ BluetoothPan(Context context, ServiceListener listener) {
mAdapter = BluetoothAdapter.getDefaultAdapter();
+ mContext = context;
mProfileConnector.connect(context, listener);
}
@@ -287,11 +290,12 @@ public final class BluetoothPan implements BluetoothProfile {
@UnsupportedAppUsage
public void setBluetoothTethering(boolean value) {
- if (DBG) log("setBluetoothTethering(" + value + ")");
+ String pkgName = mContext.getOpPackageName();
+ if (DBG) log("setBluetoothTethering(" + value + "), calling package:" + pkgName);
final IBluetoothPan service = getService();
if (service != null && isEnabled()) {
try {
- service.setBluetoothTethering(value);
+ service.setBluetoothTethering(value, pkgName);
} catch (RemoteException e) {
Log.e(TAG, "Stack:" + Log.getStackTraceString(new Throwable()));
}