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

Commit cfe8c66a authored by Michael Wachenschwanz's avatar Michael Wachenschwanz
Browse files

Fix DPM check logic for AppUsageLimitObserver (un)registering

In the case that the DevicePolicyManagerInternal Local service does not
exist on device, the permission check for
(un)registerAppUsageLimitObserver should not be skipped.

Test: atest android.app.usage.cts.UsageStatsTest (must be on a device
with <unavailable-feature name="android.software.device_admin" /> in
it's features xml)
Fixes: 155360727

Change-Id: I8a88e03a7636956d27f531cf989bda1a32799f07
parent ca089590
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -1847,7 +1847,7 @@ public class UsageStatsService extends SystemService implements
            final DevicePolicyManagerInternal dpmInternal = getDpmInternal();
            if (!hasPermissions(callingPackage,
                    Manifest.permission.SUSPEND_APPS, Manifest.permission.OBSERVE_APP_USAGE)
                    && (dpmInternal != null && !dpmInternal.isActiveSupervisionApp(callingUid))) {
                    && (dpmInternal == null || !dpmInternal.isActiveSupervisionApp(callingUid))) {
                throw new SecurityException("Caller must be the active supervision app or "
                        + "it must have both SUSPEND_APPS and OBSERVE_APP_USAGE permissions");
            }
@@ -1874,7 +1874,7 @@ public class UsageStatsService extends SystemService implements
            final DevicePolicyManagerInternal dpmInternal = getDpmInternal();
            if (!hasPermissions(callingPackage,
                    Manifest.permission.SUSPEND_APPS, Manifest.permission.OBSERVE_APP_USAGE)
                    && (dpmInternal != null && !dpmInternal.isActiveSupervisionApp(callingUid))) {
                    && (dpmInternal == null || !dpmInternal.isActiveSupervisionApp(callingUid))) {
                throw new SecurityException("Caller must be the active supervision app or "
                        + "it must have both SUSPEND_APPS and OBSERVE_APP_USAGE permissions");
            }