From 63dba694af688e0e392277abd282d004c5fa9b6b Mon Sep 17 00:00:00 2001 From: Denton Gentry Date: Sun, 24 Jul 2022 09:10:37 -0700 Subject: [PATCH] DnsConfig: don't use signed bytes when printing. intToInetString(0x0101a8c0) returns "-64.-88.1.1" because Java integers are always signed. There is not a %u format specifier. Though the quads of an IP address literally are bytes, they can be left as an int to pass to String.format. This allows room for sign bits, so intToInetString(0x0101a8c0) returns "192.168.1.1" Signed-off-by: Denton Gentry --- android/src/main/java/com/tailscale/ipn/DnsConfig.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/android/src/main/java/com/tailscale/ipn/DnsConfig.java b/android/src/main/java/com/tailscale/ipn/DnsConfig.java index 7dc047d..243b27c 100644 --- a/android/src/main/java/com/tailscale/ipn/DnsConfig.java +++ b/android/src/main/java/com/tailscale/ipn/DnsConfig.java @@ -231,10 +231,10 @@ public class DnsConfig { String intToInetString(int hostAddress) { return String.format(java.util.Locale.ROOT, "%d.%d.%d.%d", - (byte)(0xff & hostAddress), - (byte)(0xff & (hostAddress >> 8)), - (byte)(0xff & (hostAddress >> 16)), - (byte)(0xff & (hostAddress >> 24))); + (0xff & hostAddress), + (0xff & (hostAddress >> 8)), + (0xff & (hostAddress >> 16)), + (0xff & (hostAddress >> 24))); } // getDnsServersFromNetworkInfo retrieves DNS servers using ConnectivityManager