diff options
author | Jason A. Donenfeld <Jason@zx2c4.com> | 2018-04-30 05:00:51 +0200 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2018-04-30 05:29:54 +0200 |
commit | 73b0c4ea8116c4b1088dcd84cb2f4d7181baf7ab (patch) | |
tree | 225036077f4ef272531cf4e87e423c603181b449 /app/src/main/java/com/wireguard/config/Interface.java | |
parent | 622f41f11f92005e2dd3791fd13b0ace294958d5 (diff) |
TunnelEditorFragment: rewrite and simplify
This should remove some null pointer dereferences and overall make the
thing more robust.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Diffstat (limited to 'app/src/main/java/com/wireguard/config/Interface.java')
-rw-r--r-- | app/src/main/java/com/wireguard/config/Interface.java | 88 |
1 files changed, 41 insertions, 47 deletions
diff --git a/app/src/main/java/com/wireguard/config/Interface.java b/app/src/main/java/com/wireguard/config/Interface.java index 5b125f51..758b528d 100644 --- a/app/src/main/java/com/wireguard/config/Interface.java +++ b/app/src/main/java/com/wireguard/config/Interface.java @@ -6,7 +6,6 @@ import android.os.Parcel; import android.os.Parcelable; import com.wireguard.android.BR; -import com.wireguard.crypto.KeyEncoding; import com.wireguard.crypto.Keypair; import java.net.InetAddress; @@ -17,20 +16,8 @@ import java.util.List; * Represents the configuration for a WireGuard interface (an [Interface] block). */ -public class Interface implements Parcelable { - public static final Creator<Interface> CREATOR = new Creator<Interface>() { - @Override - public Interface createFromParcel(final Parcel in) { - return new Interface(in); - } - - @Override - public Interface[] newArray(final int size) { - return new Interface[size]; - } - }; - - public static class Observable extends BaseObservable { +public class Interface { + public static class Observable extends BaseObservable implements Parcelable { private String addresses; private String dnses; private String publicKey; @@ -39,7 +26,8 @@ public class Interface implements Parcelable { private String mtu; public Observable(Interface parent) { - loadData(parent); + if (parent != null) + loadData(parent); } public void loadData(Interface parent) { @@ -131,6 +119,43 @@ public class Interface implements Parcelable { this.mtu = mtu; notifyPropertyChanged(BR.mtu); } + + + public static final Creator<Observable> CREATOR = new Creator<Observable>() { + @Override + public Observable createFromParcel(final Parcel in) { + return new Observable(in); + } + + @Override + public Observable[] newArray(final int size) { + return new Observable[size]; + } + }; + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(final Parcel dest, final int flags) { + dest.writeString(addresses); + dest.writeString(dnses); + dest.writeString(publicKey); + dest.writeString(privateKey); + dest.writeString(listenPort); + dest.writeString(mtu); + } + + private Observable(final Parcel in) { + addresses = in.readString(); + dnses = in.readString(); + publicKey = in.readString(); + privateKey = in.readString(); + listenPort = in.readString(); + mtu = in.readString(); + } } private List<IPCidr> addressList; @@ -144,26 +169,6 @@ public class Interface implements Parcelable { dnsList = new LinkedList<>(); } - private Interface(final Parcel in) { - addressList = in.createTypedArrayList(IPCidr.CREATOR); - int dnsItems = in.readInt(); - dnsList = new LinkedList<>(); - for (int i = 0; i < dnsItems; ++i) { - try { - dnsList.add(InetAddress.getByAddress(in.createByteArray())); - } catch (Exception ignored) { - } - } - listenPort = in.readInt(); - mtu = in.readInt(); - setPrivateKey(in.readString()); - } - - @Override - public int describeContents() { - return 0; - } - private String getAddressString() { if (addressList.isEmpty()) return null; @@ -313,15 +318,4 @@ public class Interface implements Parcelable { sb.append(Attribute.PRIVATE_KEY.composeWith(keypair.getPrivateKey())); return sb.toString(); } - - @Override - public void writeToParcel(final Parcel dest, final int flags) { - dest.writeTypedList(addressList); - dest.writeInt(dnsList.size()); - for (final InetAddress addr : dnsList) - dest.writeByteArray(addr.getAddress()); - dest.writeInt(listenPort); - dest.writeInt(mtu); - dest.writeString(keypair == null ? "" : keypair.getPrivateKey()); - } } |