From edb9fcd04426d65257f11068093a0a677165144f Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Thu, 12 Jul 2018 16:50:42 +0200 Subject: [PATCH] do not crash on mystery last second null IP addresses, closes #1434 java.lang.IllegalArgumentException: Could not parse [null/24] at org.apache.commons.net.util.SubnetUtils.calculate(SubnetUtils.java:275) at org.apache.commons.net.util.SubnetUtils.(SubnetUtils.java:51) at org.fdroid.fdroid.net.WifiStateChangeService.setIpInfoFromNetworkInterface(WifiStateChangeService.java:261) at org.fdroid.fdroid.net.WifiStateChangeService.access$100(WifiStateChangeService.java:50) at org.fdroid.fdroid.net.WifiStateChangeService$WifiInfoThread.run(WifiStateChangeService.java:132) --- .../org/fdroid/fdroid/net/WifiStateChangeService.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/app/src/full/java/org/fdroid/fdroid/net/WifiStateChangeService.java b/app/src/full/java/org/fdroid/fdroid/net/WifiStateChangeService.java index 023524a9a..baf3a68a1 100644 --- a/app/src/full/java/org/fdroid/fdroid/net/WifiStateChangeService.java +++ b/app/src/full/java/org/fdroid/fdroid/net/WifiStateChangeService.java @@ -14,6 +14,7 @@ import android.support.v4.content.LocalBroadcastManager; import android.text.TextUtils; import android.util.Log; import org.apache.commons.net.util.SubnetUtils; +import org.fdroid.fdroid.BuildConfig; import org.fdroid.fdroid.FDroidApp; import org.fdroid.fdroid.Preferences; import org.fdroid.fdroid.UpdateService; @@ -266,11 +267,17 @@ public class WifiStateChangeService extends IntentService { // java.lang.IllegalArgumentException: Value [64] not in range [0,32] continue; } - if (inetAddress.equals(address.getAddress()) && !TextUtils.isEmpty(FDroidApp.ipAddressString)) { + try { String cidr = String.format(Locale.ENGLISH, "%s/%d", FDroidApp.ipAddressString, networkPrefixLength); FDroidApp.subnetInfo = new SubnetUtils(cidr).getInfo(); break; + } catch (IllegalArgumentException e) { + if (BuildConfig.DEBUG) { + e.printStackTrace(); + } else { + Log.i(TAG, e.getLocalizedMessage()); + } } } }