Add process check to VoiceNotePlaybackService MediaSession access.

This commit is contained in:
Greyson Parrelli
2026-04-14 21:06:01 +00:00
committed by jeffrey-signal
parent 45e6e06c01
commit 9cc47942f2
2 changed files with 12 additions and 0 deletions

View File

@@ -7,7 +7,9 @@ import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.media.AudioManager;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.Process;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@@ -114,6 +116,10 @@ public class VoiceNotePlaybackService extends MediaSessionService {
@Nullable
@Override
public MediaSession onGetSession(@NonNull MediaSession.ControllerInfo controllerInfo) {
if (Build.VERSION.SDK_INT >= 28 && controllerInfo.getUid() != Process.myUid()) {
Log.w(TAG, "Denying session to external caller: " + controllerInfo.getPackageName());
return null;
}
return mediaSession;
}

View File

@@ -8,7 +8,9 @@ package org.thoughtcrime.securesms.components.voice
import android.content.Context
import android.media.AudioManager
import android.net.Uri
import android.os.Build
import android.os.Bundle
import android.os.Process
import android.widget.Toast
import androidx.annotation.MainThread
import androidx.annotation.OptIn
@@ -94,6 +96,10 @@ class VoiceNotePlayerCallback(val context: Context, val player: VoiceNotePlayer)
private var latestUri = Uri.EMPTY
override fun onConnect(session: MediaSession, controller: MediaSession.ControllerInfo): MediaSession.ConnectionResult {
if (Build.VERSION.SDK_INT >= 28 && controller.uid != Process.myUid()) {
Log.w(TAG, "Rejecting connection from external caller: ${controller.packageName}")
return MediaSession.ConnectionResult.reject()
}
return MediaSession.ConnectionResult.accept(CUSTOM_COMMANDS, SUPPORTED_ACTIONS)
}