From 4defde5d715a526f91e1bde4f8e9091e138d7c28 Mon Sep 17 00:00:00 2001 From: Torsten Grote <t@grobox.de> Date: Mon, 16 Aug 2021 17:37:15 +0200 Subject: [PATCH] Don't start Tor when architecture is not supported --- .../org/briarproject/mailbox/core/tor/AndroidTorModule.kt | 4 ++-- .../org/briarproject/mailbox/core/tor/AndroidTorPlugin.java | 4 +++- .../java/org/briarproject/mailbox/core/tor/JavaTorModule.kt | 4 ++-- .../org/briarproject/mailbox/core/tor/JavaTorPlugin.java | 4 +++- .../mailbox/core/lifecycle/ServiceException.java | 4 ++++ .../java/org/briarproject/mailbox/core/tor/TorPlugin.java | 5 ++++- 6 files changed, 18 insertions(+), 7 deletions(-) diff --git a/mailbox-android/src/main/java/org/briarproject/mailbox/core/tor/AndroidTorModule.kt b/mailbox-android/src/main/java/org/briarproject/mailbox/core/tor/AndroidTorModule.kt index b44156e1..d6072aba 100644 --- a/mailbox-android/src/main/java/org/briarproject/mailbox/core/tor/AndroidTorModule.kt +++ b/mailbox-android/src/main/java/org/briarproject/mailbox/core/tor/AndroidTorModule.kt @@ -64,7 +64,7 @@ internal class AndroidTorModule { app.getDir("tor", Context.MODE_PRIVATE), ).also { lifecycleManager.registerService(it) } - private val architecture: String + private val architecture: String? get() { for (abi in AndroidTorPlugin.getSupportedArchitectures()) { return when { @@ -76,7 +76,7 @@ internal class AndroidTorModule { } } LOG.info("Tor is not supported on this architecture") - return "" // TODO + return null } } diff --git a/mailbox-android/src/main/java/org/briarproject/mailbox/core/tor/AndroidTorPlugin.java b/mailbox-android/src/main/java/org/briarproject/mailbox/core/tor/AndroidTorPlugin.java index b23a4d32..4c46231e 100644 --- a/mailbox-android/src/main/java/org/briarproject/mailbox/core/tor/AndroidTorPlugin.java +++ b/mailbox-android/src/main/java/org/briarproject/mailbox/core/tor/AndroidTorPlugin.java @@ -29,6 +29,8 @@ import java.util.concurrent.Executor; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; +import javax.annotation.Nullable; + public class AndroidTorPlugin extends TorPlugin { private static final List<String> LIBRARY_ARCHITECTURES = @@ -52,7 +54,7 @@ public class AndroidTorPlugin extends TorPlugin { CircumventionProvider circumventionProvider, AndroidWakeLockManager wakeLockManager, Backoff backoff, - String architecture, + @Nullable String architecture, File torDirectory) { super(ioExecutor, networkManager, locationUtils, clock, resourceProvider, circumventionProvider, backoff, architecture, torDirectory); this.ctx = ctx; diff --git a/mailbox-cli/src/main/java/org/briarproject/mailbox/core/tor/JavaTorModule.kt b/mailbox-cli/src/main/java/org/briarproject/mailbox/core/tor/JavaTorModule.kt index f8421ef6..c70b23b7 100644 --- a/mailbox-cli/src/main/java/org/briarproject/mailbox/core/tor/JavaTorModule.kt +++ b/mailbox-cli/src/main/java/org/briarproject/mailbox/core/tor/JavaTorModule.kt @@ -59,7 +59,7 @@ internal class JavaTorModule { ).also { lifecycleManager.registerService(it) } } - private val architecture: String + private val architecture: String? get() { if (isLinux()) { if (LOG.isInfoEnabled) { @@ -78,7 +78,7 @@ internal class JavaTorModule { } } LOG.info("Tor is not supported on this architecture") - return "" // TODO + return null } } diff --git a/mailbox-cli/src/main/java/org/briarproject/mailbox/core/tor/JavaTorPlugin.java b/mailbox-cli/src/main/java/org/briarproject/mailbox/core/tor/JavaTorPlugin.java index 0ecdd95f..c9ce0a9e 100644 --- a/mailbox-cli/src/main/java/org/briarproject/mailbox/core/tor/JavaTorPlugin.java +++ b/mailbox-cli/src/main/java/org/briarproject/mailbox/core/tor/JavaTorPlugin.java @@ -13,6 +13,8 @@ import java.net.URISyntaxException; import java.security.CodeSource; import java.util.concurrent.Executor; +import javax.annotation.Nullable; + public class JavaTorPlugin extends TorPlugin { JavaTorPlugin(Executor ioExecutor, @@ -22,7 +24,7 @@ public class JavaTorPlugin extends TorPlugin { ResourceProvider resourceProvider, CircumventionProvider circumventionProvider, Backoff backoff, - String architecture, + @Nullable String architecture, File torDirectory) { super(ioExecutor, networkManager, locationUtils, clock, resourceProvider, circumventionProvider, backoff, architecture, torDirectory); diff --git a/mailbox-core/src/main/java/org/briarproject/mailbox/core/lifecycle/ServiceException.java b/mailbox-core/src/main/java/org/briarproject/mailbox/core/lifecycle/ServiceException.java index adaec28c..fbd05bb6 100644 --- a/mailbox-core/src/main/java/org/briarproject/mailbox/core/lifecycle/ServiceException.java +++ b/mailbox-core/src/main/java/org/briarproject/mailbox/core/lifecycle/ServiceException.java @@ -9,6 +9,10 @@ public class ServiceException extends Exception { super(); } + public ServiceException(String msg) { + super(msg); + } + public ServiceException(Throwable cause) { super(cause); } diff --git a/mailbox-core/src/main/java/org/briarproject/mailbox/core/tor/TorPlugin.java b/mailbox-core/src/main/java/org/briarproject/mailbox/core/tor/TorPlugin.java index 5adf98dd..9f73da2e 100644 --- a/mailbox-core/src/main/java/org/briarproject/mailbox/core/tor/TorPlugin.java +++ b/mailbox-core/src/main/java/org/briarproject/mailbox/core/tor/TorPlugin.java @@ -70,6 +70,7 @@ abstract class TorPlugin implements Service, EventHandler { private final LocationUtils locationUtils; private final Clock clock; private final Backoff backoff; + @Nullable private final String architecture; private final CircumventionProvider circumventionProvider; private final ResourceProvider resourceProvider; @@ -93,7 +94,7 @@ abstract class TorPlugin implements Service, EventHandler { ResourceProvider resourceProvider, CircumventionProvider circumventionProvider, Backoff backoff, - String architecture, + @Nullable String architecture, File torDirectory) { this.ioExecutor = ioExecutor; this.networkManager = networkManager; @@ -222,6 +223,8 @@ abstract class TorPlugin implements Service, EventHandler { } private void installAssets() throws ServiceException { + if (architecture == null) + throw new ServiceException("Tor not supported on this architecture"); try { // The done file may already exist from a previous installation //noinspection ResultOfMethodCallIgnored -- GitLab