[Android] Remote Access: stop exporting the control service
Duncan McNamara
git at videolan.org
Fri Oct 2 07:29:56 UTC 2026
vlc-android | branch: master | Duncan McNamara <dcn.mcnamara at gmail.com> | Wed Sep 23 13:50:45 2026 +0200| [e689c2f9ee3ca0b81c277c62ceb88e7e75359b81] | committer: Nicolas Pomepuy
Remote Access: stop exporting the control service
Remote Access could be started by any app with no permissions,
bypassing the disabled toggle in Settings.
Stop exporting the service, and bail out in onCreate() if the
feature isn't enabled, as a second line of defense.
> https://code.videolan.org/videolan/vlc-android/commit/e689c2f9ee3ca0b81c277c62ceb88e7e75359b81
---
application/remote-access-server/src/main/AndroidManifest.xml | 2 +-
.../java/org/videolan/vlc/remoteaccessserver/RemoteAccessService.kt | 6 ++++++
2 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/application/remote-access-server/src/main/AndroidManifest.xml b/application/remote-access-server/src/main/AndroidManifest.xml
index b29664887c..a8f5d1feb3 100644
--- a/application/remote-access-server/src/main/AndroidManifest.xml
+++ b/application/remote-access-server/src/main/AndroidManifest.xml
@@ -29,7 +29,7 @@
<application>
<service
android:name=".RemoteAccessService"
- android:exported="true"
+ android:exported="false"
android:foregroundServiceType="specialUse">
<property
android:name="android.app.PROPERTY_SPECIAL_USE_FGS_SUBTYPE"
diff --git a/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/RemoteAccessService.kt b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/RemoteAccessService.kt
index 6aa176e11d..f333d9d4cf 100644
--- a/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/RemoteAccessService.kt
+++ b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/RemoteAccessService.kt
@@ -125,6 +125,12 @@ class RemoteAccessService : LifecycleService(), CoroutineScope by MainScope() {
super.onCreate()
if (AndroidUtil.isOOrLater) forceForeground()
lifecycleScope.launch(Dispatchers.IO) {
+ if (!Settings.getInstance(this at RemoteAccessService)
+ .getBoolean(KEY_ENABLE_REMOTE_ACCESS, false)
+ ) {
+ withContext(Dispatchers.Main) { stopSelf() }
+ return at launch
+ }
server = RemoteAccessServer.getInstance(applicationContext)
if (!Settings.getInstance(this at RemoteAccessService)
.getBoolean(KEY_REMOTE_ACCESS_LAST_STATE_STOPPED, false)
More information about the Android
mailing list