Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit db862d2d authored by Evan Chen's avatar Evan Chen
Browse files

Check nearby devices permission for UUID matching

Need BLUETOOTH_SCAN and BLUETOOTH_CONNECT since

System apps will receive data about nearby devices that either have not
already been paired or paired.

Bug: 330793558, 330909494,316015619
Test: cts
Change-Id: I2282fdd333075c6fc6682a0f86081323b55bb5d6
parent dad0862b
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -9877,7 +9877,7 @@ package android.companion {
    ctor public ObservingDevicePresenceRequest.Builder();
    method @NonNull public android.companion.ObservingDevicePresenceRequest build();
    method @NonNull public android.companion.ObservingDevicePresenceRequest.Builder setAssociationId(int);
    method @NonNull @RequiresPermission(android.Manifest.permission.REQUEST_OBSERVE_DEVICE_UUID_PRESENCE) public android.companion.ObservingDevicePresenceRequest.Builder setUuid(@NonNull android.os.ParcelUuid);
    method @NonNull @RequiresPermission(allOf={android.Manifest.permission.REQUEST_OBSERVE_DEVICE_UUID_PRESENCE, android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_SCAN}) public android.companion.ObservingDevicePresenceRequest.Builder setUuid(@NonNull android.os.ParcelUuid);
  }
  public final class WifiDeviceFilter implements android.companion.DeviceFilter<android.net.wifi.ScanResult> {
+5 −1
Original line number Diff line number Diff line
@@ -183,7 +183,11 @@ public final class ObservingDevicePresenceRequest implements Parcelable {
         * @param uuid The ParcelUuid for observing device presence.
         */
        @NonNull
        @RequiresPermission(android.Manifest.permission.REQUEST_OBSERVE_DEVICE_UUID_PRESENCE)
        @RequiresPermission(allOf = {
                android.Manifest.permission.REQUEST_OBSERVE_DEVICE_UUID_PRESENCE,
                android.Manifest.permission.BLUETOOTH_CONNECT,
                android.Manifest.permission.BLUETOOTH_SCAN
        })
        public Builder setUuid(@NonNull ParcelUuid uuid) {
            checkNotUsed();
            this.mUuid = uuid;
+5 −1
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@

package com.android.server.companion.utils;

import static android.Manifest.permission.BLUETOOTH_CONNECT;
import static android.Manifest.permission.BLUETOOTH_SCAN;
import static android.Manifest.permission.INTERACT_ACROSS_USERS;
import static android.Manifest.permission.MANAGE_COMPANION_DEVICES;
import static android.Manifest.permission.REQUEST_COMPANION_SELF_MANAGED;
@@ -209,7 +211,9 @@ public final class PermissionsUtils {
     */
    public static void enforceCallerCanObserveDevicePresenceByUuid(@NonNull Context context) {
        if (context.checkCallingPermission(REQUEST_OBSERVE_DEVICE_UUID_PRESENCE)
                != PERMISSION_GRANTED) {
                != PERMISSION_GRANTED
                || context.checkCallingPermission(BLUETOOTH_SCAN) != PERMISSION_GRANTED
                || context.checkCallingPermission(BLUETOOTH_CONNECT) != PERMISSION_GRANTED) {
            throw new SecurityException("Caller (uid=" + getCallingUid() + ") does not have "
                    + "permissions to request observing device presence base on the UUID");
        }