From e58b719cf92dc1f7f115be955927531eacf3f3c4 Mon Sep 17 00:00:00 2001 From: James Tucker Date: Mon, 28 Mar 2022 15:53:27 -0700 Subject: [PATCH] packet_buffer: reset packet buffer state in Clone The reset may be defensive, however, the code as-is is missing a clone of EgressRoute, and was previously also missing the should-not-be-set PreserveObject. The reset provides clarity of intent and safety against missing field assignments. --- pkg/tcpip/stack/packet_buffer.go | 1 + 1 file changed, 1 insertion(+) diff --git a/pkg/tcpip/stack/packet_buffer.go b/pkg/tcpip/stack/packet_buffer.go index 8e5293568..7ddcff2ce 100644 --- a/pkg/tcpip/stack/packet_buffer.go +++ b/pkg/tcpip/stack/packet_buffer.go @@ -329,6 +329,7 @@ func (pk *PacketBuffer) headerView(typ headerType) tcpipbuffer.View { // shared. Hence, no modifications is done to underlying packet payload. func (pk *PacketBuffer) Clone() *PacketBuffer { newPk := pkPool.Get().(*PacketBuffer) + newPk.reset() newPk.PacketBufferEntry = pk.PacketBufferEntry newPk.buf = pk.buf.Clone() newPk.reserved = pk.reserved