diff options
Diffstat (limited to 'app/src/main/java/com/wireguard/config/Config.java')
-rw-r--r-- | app/src/main/java/com/wireguard/config/Config.java | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/app/src/main/java/com/wireguard/config/Config.java b/app/src/main/java/com/wireguard/config/Config.java index 2a282d09..d5f0c6e5 100644 --- a/app/src/main/java/com/wireguard/config/Config.java +++ b/app/src/main/java/com/wireguard/config/Config.java @@ -139,19 +139,27 @@ public class Config extends BaseObservable new InputStreamReader(stream, StandardCharsets.UTF_8))) { Peer currentPeer = null; String line; + boolean inInterfaceSection = false; while ((line = reader.readLine()) != null) { - if (line.isEmpty()) + if (line.isEmpty() || line.startsWith("#")) continue; if ("[Interface]".equals(line)) { currentPeer = null; + inInterfaceSection = true; } else if ("[Peer]".equals(line)) { currentPeer = addPeer(); - } else if (currentPeer == null) { + inInterfaceSection = false; + } else if (inInterfaceSection) { iface.parse(line); - } else { + } else if (currentPeer != null) { currentPeer.parse(line); + } else { + throw new IllegalArgumentException("Invalid configuration line: " + line); } } + if (!inInterfaceSection && currentPeer == null) { + throw new IllegalArgumentException("Did not find any config information"); + } } } |