This should remove some null pointer dereferences and overall make the thing more robust. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
42 lines
1.1 KiB
Java
42 lines
1.1 KiB
Java
package com.wireguard.config;
|
|
|
|
import java.net.Inet4Address;
|
|
import java.net.Inet6Address;
|
|
import java.net.InetAddress;
|
|
import java.util.Locale;
|
|
|
|
public class IPCidr {
|
|
private InetAddress address;
|
|
private int cidr;
|
|
|
|
public IPCidr(String in) {
|
|
cidr = -1;
|
|
int slash = in.lastIndexOf('/');
|
|
if (slash != -1 && slash < in.length() - 1) {
|
|
try {
|
|
cidr = Integer.parseInt(in.substring(slash + 1), 10);
|
|
in = in.substring(0, slash);
|
|
} catch (Exception ignored) {
|
|
}
|
|
}
|
|
address = Attribute.parseIPString(in);
|
|
if ((address instanceof Inet6Address) && (cidr > 128 || cidr < 0))
|
|
cidr = 128;
|
|
else if ((address instanceof Inet4Address) && (cidr > 32 || cidr < 0))
|
|
cidr = 32;
|
|
}
|
|
|
|
public InetAddress getAddress() {
|
|
return address;
|
|
}
|
|
|
|
public int getCidr() {
|
|
return cidr;
|
|
}
|
|
|
|
@Override
|
|
public String toString() {
|
|
return String.format(Locale.getDefault(), "%s/%d", address.getHostAddress(), cidr);
|
|
}
|
|
}
|