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.
This commit is contained in:
James Tucker
2022-03-28 15:53:27 -07:00
parent 34623f4d75
commit e58b719cf9
+1
View File
@@ -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