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

Commit 52b25970 authored by Vlad Popa's avatar Vlad Popa
Browse files

Add MODIFY_AUDIO_ROUTING permission for setting the assistant mode

Test: trivial
Bug: 416329698
Flag: EXEMPT bugfix
Change-Id: I37385a90f11f152e4aba75288258c03983495625
parent b9484606
Loading
Loading
Loading
Loading
+15 −6
Original line number Diff line number Diff line
@@ -7080,8 +7080,7 @@ public class AudioService extends IAudioService.Stub
                    + ", uid=" + uid + ", caller=" + callingPackage + ")");
        }
        if (mContext.checkCallingPermission(
                MODIFY_AUDIO_SETTINGS_PRIVILEGED) != PackageManager.PERMISSION_GRANTED) {
        if (!hasAudioSettingsPrivilegedOrAudioRoutingPermission(/*withSelf=*/false)) {
            if (mode == MODE_ASSISTANT_CONVERSATION) {
                Log.w(TAG,
                        "MODIFY_AUDIO_SETTINGS_PRIVILEGED Permission Denial for "
@@ -8487,6 +8486,19 @@ public class AudioService extends IAudioService.Stub
                == PackageManager.PERMISSION_GRANTED;
    }
    private boolean hasAudioSettingsPrivilegedOrAudioRoutingPermission(boolean withSelf) {
        if (withSelf) {
            return mContext.checkCallingOrSelfPermission(MODIFY_AUDIO_SETTINGS_PRIVILEGED)
                    == PackageManager.PERMISSION_GRANTED
                    || mContext.checkCallingOrSelfPermission(MODIFY_AUDIO_ROUTING)
                    == PackageManager.PERMISSION_GRANTED;
        }
        return mContext.checkCallingPermission(MODIFY_AUDIO_SETTINGS_PRIVILEGED)
                == PackageManager.PERMISSION_GRANTED
                || mContext.checkCallingPermission(MODIFY_AUDIO_ROUTING)
                == PackageManager.PERMISSION_GRANTED;
    }
    private void checkCallingAudioSettingsPrivilegedPermission() {
        if (!registerVolumeCallbackApiHardening()) {
            return;
@@ -11958,10 +11970,7 @@ public class AudioService extends IAudioService.Stub
        // does caller have system privileges to bypass HardeningEnforcer
        boolean permissionOverridesCheck = false;
        if ((mContext.checkCallingOrSelfPermission(MODIFY_AUDIO_SETTINGS_PRIVILEGED)
                == PackageManager.PERMISSION_GRANTED)
                || (mContext.checkCallingOrSelfPermission(MODIFY_AUDIO_ROUTING)
                == PackageManager.PERMISSION_GRANTED)) {
        if (hasAudioSettingsPrivilegedOrAudioRoutingPermission(/*withSelf=*/true)) {
            permissionOverridesCheck = true;
        } else if (uid < UserHandle.AID_APP_START) {
            permissionOverridesCheck = true;