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

Commit 52b268fe authored by Jakub Pawlowski's avatar Jakub Pawlowski
Browse files

Check permission before sending batch scan result

Use same checks as for regular scan results

Bug: 172670415
Test: compilation
Merged-In: I4274026943ce64a51a30c3fbf6cc85eec853ad4f
Change-Id: I4274026943ce64a51a30c3fbf6cc85eec853ad4f
parent 81fbe141
Loading
Loading
Loading
Loading
+28 −0
Original line number Diff line number Diff line
@@ -1531,6 +1531,15 @@ public class GattService extends ProfileService {
        mScanManager.callbackDone(clientIf, status);
    }

    ScanClient findBatchScanClientById(int scannerId) {
        for (ScanClient client : mScanManager.getBatchScanQueue()) {
            if (client.scannerId == scannerId) {
                return client;
            }
        }
        return null;
    }

    void onBatchScanReports(int status, int scannerId, int reportType, int numRecords,
            byte[] recordData) throws RemoteException {
        if (DBG) {
@@ -1545,6 +1554,18 @@ public class GattService extends ProfileService {
            if (app == null) {
                return;
            }

            ScanClient client = findBatchScanClientById(scannerId);
            if (client == null) {
                return;
            }

            // Do no report if location mode is OFF or the client has no location permission
            // PEERS_MAC_ADDRESS permission holders always get results
            if (!hasScanResultPermission(client)) {
                return;
            }

            if (app.callback != null) {
                app.callback.onBatchScanResults(new ArrayList<ScanResult>(results));
            } else {
@@ -1586,6 +1607,13 @@ public class GattService extends ProfileService {
        if (app == null) {
            return;
        }

        // Do no report if location mode is OFF or the client has no location permission
        // PEERS_MAC_ADDRESS permission holders always get results
        if (!hasScanResultPermission(client)) {
            return;
        }

        if (client.filters == null || client.filters.isEmpty()) {
            sendBatchScanResults(app, client, new ArrayList<ScanResult>(allResults));
            // TODO: Question to reviewer: Shouldn't there be a return here?