diff options
author | cyBerta <cyberta@riseup.net> | 2019-10-25 17:10:13 +0200 |
---|---|---|
committer | cyBerta <cyberta@riseup.net> | 2019-10-25 17:10:13 +0200 |
commit | 761b604e14b14a86a357816b266e77d458137c83 (patch) | |
tree | f3dfefaeee6b71738fd1ae1d670d6392c38a8f2b /app/src/main/java/de/blinkt | |
parent | 6b4f3597733ced8d312ed263d53b9669d6274d65 (diff) |
implement error handling for edge case when Android
throws an nullpointer exception while it tries to prepare
the VpnService
Diffstat (limited to 'app/src/main/java/de/blinkt')
-rw-r--r-- | app/src/main/java/de/blinkt/openvpn/LaunchVPN.java | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/app/src/main/java/de/blinkt/openvpn/LaunchVPN.java b/app/src/main/java/de/blinkt/openvpn/LaunchVPN.java index 60e4abb6..70f8e445 100644 --- a/app/src/main/java/de/blinkt/openvpn/LaunchVPN.java +++ b/app/src/main/java/de/blinkt/openvpn/LaunchVPN.java @@ -26,7 +26,9 @@ import de.blinkt.openvpn.core.VpnStatus; import se.leap.bitmaskclient.MainActivity; import se.leap.bitmaskclient.R; +import static se.leap.bitmaskclient.Constants.EIP_ACTION_PREPARE_VPN; import static se.leap.bitmaskclient.Constants.PROVIDER_PROFILE; +import static se.leap.bitmaskclient.eip.EipResultBroadcast.tellToReceiverOrBroadcast; /** * This Activity actually handles two stages of a launcher shortcut's life cycle. @@ -62,6 +64,7 @@ public class LaunchVPN extends Activity { private static final int START_VPN_PROFILE = 70; + private static final String TAG = LaunchVPN.class.getName(); private VpnProfile mSelectedProfile; @@ -180,7 +183,15 @@ public class LaunchVPN extends Activity { return; } - Intent intent = VpnService.prepare(this); + Intent intent = null; + try { + intent = VpnService.prepare(this.getApplicationContext()); + } catch (NullPointerException npe) { + tellToReceiverOrBroadcast(this.getApplicationContext(), EIP_ACTION_PREPARE_VPN, RESULT_CANCELED); + finish(); + return; + } + // Check if we want to fix /dev/tun SharedPreferences prefs = Preferences.getDefaultSharedPreferences(this); boolean usecm9fix = prefs.getBoolean("useCM9Fix", false); |