From d3ff2d6b62b095f37582affe84e267d7e5be88c6 Mon Sep 17 00:00:00 2001 From: Josh Bleecher Snyder Date: Fri, 4 Dec 2020 15:36:21 -0800 Subject: device: clear pointers when returning elems to pools Signed-off-by: Josh Bleecher Snyder --- device/receive.go | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'device/receive.go') diff --git a/device/receive.go b/device/receive.go index e4a94b5..0a8228c 100644 --- a/device/receive.go +++ b/device/receive.go @@ -37,6 +37,17 @@ type QueueInboundElement struct { endpoint conn.Endpoint } +// clearPointers clears elem fields that contain pointers. +// This makes the garbage collector's life easier and +// avoids accidentally keeping other objects around unnecessarily. +// It also reduces the possible collateral damage from use-after-free bugs. +func (elem *QueueInboundElement) clearPointers() { + elem.buffer = nil + elem.packet = nil + elem.keypair = nil + elem.endpoint = nil +} + func (elem *QueueInboundElement) Drop() { atomic.StoreInt32(&elem.dropped, AtomicTrue) } -- cgit v1.2.3-59-g8ed1b