From 9d2cc4c3c1c301ac954f419381712abb183979ef Mon Sep 17 00:00:00 2001 From: akwizgran Date: Sat, 20 Feb 2021 10:18:24 +0000 Subject: [PATCH] Add method to detect whether system uses glibc. --- .../bramble/plugin/tor/UnixTorPlugin.java | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/bramble-java/src/main/java/org/briarproject/bramble/plugin/tor/UnixTorPlugin.java b/bramble-java/src/main/java/org/briarproject/bramble/plugin/tor/UnixTorPlugin.java index f7ee9134e..101b06e3e 100644 --- a/bramble-java/src/main/java/org/briarproject/bramble/plugin/tor/UnixTorPlugin.java +++ b/bramble-java/src/main/java/org/briarproject/bramble/plugin/tor/UnixTorPlugin.java @@ -14,12 +14,18 @@ import org.briarproject.bramble.api.system.ResourceProvider; import java.io.File; import java.util.concurrent.Executor; +import java.util.logging.Logger; import javax.net.SocketFactory; +import static java.util.logging.Level.INFO; +import static java.util.logging.Logger.getLogger; + @NotNullByDefault class UnixTorPlugin extends JavaTorPlugin { + private static final Logger LOG = getLogger(UnixTorPlugin.class.getName()); + UnixTorPlugin(Executor ioExecutor, Executor wakefulIoExecutor, NetworkManager networkManager, @@ -41,6 +47,8 @@ class UnixTorPlugin extends JavaTorPlugin { circumventionProvider, batteryManager, backoff, torRendezvousCrypto, callback, architecture, maxLatency, maxIdleTime, torDirectory); + boolean isGlibc = isGlibc(); + if (LOG.isLoggable(INFO)) LOG.info("System uses glibc: " + isGlibc); } @Override @@ -48,10 +56,27 @@ class UnixTorPlugin extends JavaTorPlugin { return CLibrary.INSTANCE.getpid(); } + protected boolean isGlibc() { + try { + GnuCLibrary glibc = Native.loadLibrary("c", GnuCLibrary.class); + if (LOG.isLoggable(INFO)) { + LOG.info("glibc version " + glibc.gnu_get_libc_version()); + } + return true; + } catch (UnsatisfiedLinkError e) { + return false; + } + } + private interface CLibrary extends Library { CLibrary INSTANCE = Native.loadLibrary("c", CLibrary.class); int getpid(); } + + private interface GnuCLibrary extends Library { + + String gnu_get_libc_version(); + } }