From: Andrej Mihajlov Date: Wed, 2 Dec 2020 12:53:58 +0000 (+0100) Subject: WireGuardKit: Only assign self.settingsGenerator upon success to set tunnel network... X-Git-Tag: 1.0.10-18~48 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b34625f5111358ab0263b446a1774956f2c171e8;p=thirdparty%2Fwireguard-apple.git WireGuardKit: Only assign self.settingsGenerator upon success to set tunnel network settings to avoid inconsistent state Signed-off-by: Andrej Mihajlov --- diff --git a/WireGuardKit/Sources/WireGuardKit/WireGuardAdapter.swift b/WireGuardKit/Sources/WireGuardKit/WireGuardAdapter.swift index c5a6e2c..358ab53 100644 --- a/WireGuardKit/Sources/WireGuardKit/WireGuardAdapter.swift +++ b/WireGuardKit/Sources/WireGuardKit/WireGuardAdapter.swift @@ -263,7 +263,6 @@ public class WireGuardAdapter { let settingsGenerator = PacketTunnelSettingsGenerator(tunnelConfiguration: tunnelConfiguration, resolvedEndpoints: resolvedEndpoints) let networkSettings = settingsGenerator.generateNetworkSettings() - self.settingsGenerator = settingsGenerator var systemError: Error? let condition = NSCondition() @@ -284,6 +283,11 @@ public class WireGuardAdapter { if condition.wait(until: Date().addingTimeInterval(setTunnelNetworkSettingsTimeout)) { let returnError = systemError.map { WireGuardAdapterError.setNetworkSettings($0) } + // Only assign `settingsGenerator` when `setTunnelNetworkSettings` succeeded. + if returnError == nil { + self.settingsGenerator = settingsGenerator + } + completionHandler(settingsGenerator, returnError) } else { completionHandler(nil, .setNetworkSettingsTimeout)