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

Commit ce8499e1 authored by Anthony Stange's avatar Anthony Stange
Browse files

Use enforceCallingOrSelfPermission for ContextHub APIs

Previously, checkCallingPermission was used which fails when an IPC
isn't used (e.g. something in the system server calls our APIs).
Additionally, enforceCallingOrSelfPermission helps throw an exception
with better logging than the check and throw does today.

Fixes: 220167285
Test: Call from system server code
Change-Id: I152ff750fa1505628bfe7f9cd78f21a222eefa87
parent 4d897c6a
Loading
Loading
Loading
Loading
+3 −10
Original line number Diff line number Diff line
@@ -16,8 +16,6 @@

package com.android.server.location.contexthub;

import static android.content.pm.PackageManager.PERMISSION_GRANTED;

import android.Manifest;
import android.content.Context;
import android.hardware.contexthub.V1_0.AsyncEventType;
@@ -297,20 +295,15 @@ import java.util.List;
    }

    /**
     * Checks for location hardware permissions.
     * Checks for ACCESS_CONTEXT_HUB permissions.
     *
     * @param context the context of the service
     */
    /* package */
    static void checkPermissions(Context context) {
        boolean hasAccessContextHubPermission = (context.checkCallingPermission(
                CONTEXT_HUB_PERMISSION) == PERMISSION_GRANTED);

        if (!hasAccessContextHubPermission) {
            throw new SecurityException(
        context.enforceCallingOrSelfPermission(CONTEXT_HUB_PERMISSION,
                "ACCESS_CONTEXT_HUB permission required to use Context Hub");
    }
    }

    /**
     * Helper function to convert from the HAL Result enum error code to the