NetworkExtension: check isTunnelClosed before packet existence
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
This commit is contained in:
@@ -163,9 +163,9 @@ class PacketTunnelProvider: NEPacketTunnelProvider {
|
|||||||
guard let buf = buf else { return 0 }
|
guard let buf = buf else { return 0 }
|
||||||
let wgContext = wgCtxPtr.bindMemory(to: WireGuardContext.self, capacity: 1).pointee
|
let wgContext = wgCtxPtr.bindMemory(to: WireGuardContext.self, capacity: 1).pointee
|
||||||
var isTunnelClosed = false
|
var isTunnelClosed = false
|
||||||
guard let packet = wgContext.readPacket(isTunnelClosed: &isTunnelClosed) else { return 0 }
|
let packet = wgContext.readPacket(isTunnelClosed: &isTunnelClosed)
|
||||||
if isTunnelClosed { return -1 }
|
if isTunnelClosed { return -1 }
|
||||||
let packetData = packet.data
|
guard let packetData = packet?.data else { return 0 }
|
||||||
if packetData.count <= len {
|
if packetData.count <= len {
|
||||||
packetData.copyBytes(to: buf, count: packetData.count)
|
packetData.copyBytes(to: buf, count: packetData.count)
|
||||||
return packetData.count
|
return packetData.count
|
||||||
|
|||||||
Reference in New Issue
Block a user