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

Commit 5eaab289 authored by Chienyuan Huang's avatar Chienyuan Huang
Browse files

Extend permission check for setAdvertisingParameters

Flag: com.android.bluetooth.flags.directed_advertising
Bug: 378230500
Bug: 383304593
Test: m com.andorid.btservices
Change-Id: Ifeb55d2df7486ad8e2ee490a34062f33f963eb56
parent e1536ce9
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -81,7 +81,7 @@ interface IBluetoothGatt {
    void setAdvertisingData(in int advertiserId, in AdvertiseData data, in AttributionSource attributionSource);
    @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.BLUETOOTH_ADVERTISE)")
    void setScanResponseData(in int advertiserId, in AdvertiseData data, in AttributionSource attributionSource);
    @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.BLUETOOTH_ADVERTISE)")
    @JavaPassthrough(annotation="@android.annotation.RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_ADVERTISE,android.Manifest.permission.BLUETOOTH_PRIVILEGED}, conditional=true)")
    void setAdvertisingParameters(in int advertiserId, in AdvertisingSetParameters parameters, in AttributionSource attributionSource);
    @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.BLUETOOTH_ADVERTISE)")
    void setPeriodicAdvertisingParameters(in int advertiserId, in PeriodicAdvertisingParameters parameters, in AttributionSource attributionSource);
+10 −1
Original line number Diff line number Diff line
@@ -2061,7 +2061,12 @@ public class GattService extends ProfileService {
        mAdvertiseManager.setScanResponseData(advertiserId, data);
    }

    @RequiresPermission(BLUETOOTH_ADVERTISE)
    @RequiresPermission(
            allOf = {
                BLUETOOTH_ADVERTISE,
                BLUETOOTH_PRIVILEGED,
            },
            conditional = true)
    void setAdvertisingParameters(
            int advertiserId,
            AdvertisingSetParameters parameters,
@@ -2070,6 +2075,10 @@ public class GattService extends ProfileService {
                this, attributionSource, "GattService setAdvertisingParameters")) {
            return;
        }
        if (parameters.getOwnAddressType() != AdvertisingSetParameters.ADDRESS_TYPE_DEFAULT
                || parameters.isDirected()) {
            this.enforceCallingOrSelfPermission(BLUETOOTH_PRIVILEGED, null);
        }
        mAdvertiseManager.setAdvertisingParameters(advertiserId, parameters);
    }

+1 −1
Original line number Diff line number Diff line
@@ -1242,7 +1242,7 @@ package android.bluetooth.le {
  public final class AdvertisingSet {
    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADVERTISE) public void enableAdvertising(boolean, int, int);
    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADVERTISE) public void setAdvertisingData(android.bluetooth.le.AdvertiseData);
    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADVERTISE) public void setAdvertisingParameters(android.bluetooth.le.AdvertisingSetParameters);
    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_ADVERTISE, android.Manifest.permission.BLUETOOTH_PRIVILEGED}, conditional=true) public void setAdvertisingParameters(android.bluetooth.le.AdvertisingSetParameters);
    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADVERTISE) public void setPeriodicAdvertisingData(android.bluetooth.le.AdvertiseData);
    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADVERTISE) public void setPeriodicAdvertisingEnabled(boolean);
    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADVERTISE) public void setPeriodicAdvertisingParameters(android.bluetooth.le.PeriodicAdvertisingParameters);
+7 −1
Original line number Diff line number Diff line
@@ -136,11 +136,17 @@ public final class AdvertisingSet {
     * advertising is not active. This method returns immediately, the operation status is delivered
     * through {@code callback.onAdvertisingParametersUpdated}.
     *
     * <p>Requires the {@link android.Manifest.permission#BLUETOOTH_PRIVILEGED} permission when
     * {@code parameters.getOwnAddressType()} is different from {@code
     * AdvertisingSetParameters.ADDRESS_TYPE_DEFAULT} or {@code parameters.isDirected()} is true.
     *
     * @param parameters advertising set parameters.
     */
    @RequiresLegacyBluetoothAdminPermission
    @RequiresBluetoothAdvertisePermission
    @RequiresPermission(BLUETOOTH_ADVERTISE)
    @RequiresPermission(
            allOf = {BLUETOOTH_ADVERTISE, BLUETOOTH_PRIVILEGED},
            conditional = true)
    public void setAdvertisingParameters(AdvertisingSetParameters parameters) {
        try {
            mGatt.setAdvertisingParameters(mAdvertiserId, parameters, mAttributionSource);