]> git.ipfire.org Git - thirdparty/wireguard-apple.git/commitdiff
Parser: Peers in a configuation may not share the same public key
authorRoopesh Chander <roop@roopc.net>
Tue, 6 Nov 2018 02:47:03 +0000 (08:17 +0530)
committerRoopesh Chander <roop@roopc.net>
Tue, 6 Nov 2018 02:47:56 +0000 (08:17 +0530)
Signed-off-by: Roopesh Chander <roop@roopc.net>
WireGuard/WireGuard/ConfigFile/WgQuickConfigFileParser.swift

index 869d94e03dc3da30df6a5c2ebf31c237302b450c..863cd1151b601c52c19e061e48af835678067c5f 100644 (file)
@@ -16,6 +16,7 @@ class WgQuickConfigFileParser {
         case noInterface
         case invalidInterface
         case multipleInterfaces
+        case multiplePeersWithSamePublicKey
         case invalidPeer
     }
 
@@ -149,6 +150,12 @@ class WgQuickConfigFileParser {
             }
         }
 
+        let peerPublicKeysArray = peerConfigurations.map { $0.publicKey }
+        let peerPublicKeysSet = Set<Data>(peerPublicKeysArray)
+        if (peerPublicKeysArray.count != peerPublicKeysSet.count) {
+            throw ParseError.multiplePeersWithSamePublicKey
+        }
+
         if let interfaceConfiguration = interfaceConfiguration {
             let tunnelConfiguration = TunnelConfiguration(interface: interfaceConfiguration)
             tunnelConfiguration.peers = peerConfigurations