From ff7e4f7531653875260c7dd87a4e150ce2e22297 Mon Sep 17 00:00:00 2001 From: Ytai Ben-Tsvi Date: Tue, 17 Mar 2020 13:11:39 -0700 Subject: [PATCH] Revert "Relax permission checks in sound trigger middleware" This is a rollback of ag/10525952, since the underlying issue is was working around has been addressed. Bug: 151281856 Test: Some people have reported this to work. I'm still seeing issues on Sargo, and want more rigorous testing done by QA, owners of Now Playing, and owners of the permission subsystem. Change-Id: I711470fa4f8478bce74d94ca403b029dd9a1bbd7 --- .../SoundTriggerMiddlewareValidation.java | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/soundtrigger_middleware/SoundTriggerMiddlewareValidation.java b/services/core/java/com/android/server/soundtrigger_middleware/SoundTriggerMiddlewareValidation.java index 1292f6c121b4f..63048f6b95b31 100644 --- a/services/core/java/com/android/server/soundtrigger_middleware/SoundTriggerMiddlewareValidation.java +++ b/services/core/java/com/android/server/soundtrigger_middleware/SoundTriggerMiddlewareValidation.java @@ -252,8 +252,21 @@ public class SoundTriggerMiddlewareValidation implements ISoundTriggerMiddleware * @param permission The permission to check. */ void enforcePermission(String permission) { - mContext.enforceCallingOrSelfPermission(permission, - String.format("Caller must have the %s permission.", permission)); + final int status = PermissionChecker.checkCallingOrSelfPermissionForPreflight(mContext, + permission); + switch (status) { + case PermissionChecker.PERMISSION_GRANTED: + return; + case PermissionChecker.PERMISSION_HARD_DENIED: + throw new SecurityException( + String.format("Caller must have the %s permission.", permission)); + case PermissionChecker.PERMISSION_SOFT_DENIED: + throw new ServiceSpecificException(Status.TEMPORARY_PERMISSION_DENIED, + String.format("Caller must have the %s permission.", permission)); + default: + throw new InternalServerError( + new RuntimeException("Unexpected perimission check result.")); + } } @Override