From b21de2e398b3760b51be4d2325c114b8727b72f0 Mon Sep 17 00:00:00 2001 From: "Jason A. Donenfeld" Date: Thu, 1 Nov 2018 22:01:52 +0100 Subject: [PATCH] NetworkExtension: check isTunnelClosed before packet existence Signed-off-by: Jason A. Donenfeld --- .../WireGuardNetworkExtension/PacketTunnelProvider.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/WireGuard/WireGuardNetworkExtension/PacketTunnelProvider.swift b/WireGuard/WireGuardNetworkExtension/PacketTunnelProvider.swift index 48f840b..7fc12cf 100644 --- a/WireGuard/WireGuardNetworkExtension/PacketTunnelProvider.swift +++ b/WireGuard/WireGuardNetworkExtension/PacketTunnelProvider.swift @@ -163,9 +163,9 @@ class PacketTunnelProvider: NEPacketTunnelProvider { guard let buf = buf else { return 0 } let wgContext = wgCtxPtr.bindMemory(to: WireGuardContext.self, capacity: 1).pointee var isTunnelClosed = false - guard let packet = wgContext.readPacket(isTunnelClosed: &isTunnelClosed) else { return 0 } + let packet = wgContext.readPacket(isTunnelClosed: &isTunnelClosed) if isTunnelClosed { return -1 } - let packetData = packet.data + guard let packetData = packet?.data else { return 0 } if packetData.count <= len { packetData.copyBytes(to: buf, count: packetData.count) return packetData.count