Skip to content

Commit 502657c

Browse files
committed
netstack/icmp: missing decref on pkt
1 parent 03fb2e7 commit 502657c

File tree

1 file changed

+12
-11
lines changed

1 file changed

+12
-11
lines changed

intra/netstack/icmp.go

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -125,10 +125,11 @@ func (f *icmpForwarder) reply4(id stack.TransportEndpointID, pkt *stack.PacketBu
125125
replyICMPHdr.SetCode(0) // EchoReply must have Code=0.
126126
replyICMPHdr.SetChecksum(^checksum.Checksum(replyRef, 0))
127127

128-
replyPkt := stack.NewPacketBuffer(stack.PacketBufferOptions{
128+
var replyPkt *stack.PacketBuffer = stack.NewPacketBuffer(stack.PacketBufferOptions{
129129
ReserveHeaderBytes: int(route.MaxHeaderLength()),
130130
Payload: buffer.MakeWithView(replyBuf),
131131
})
132+
defer replyPkt.DecRef()
132133

133134
log.D("icmp: v4: %s: ok type %v/%v sz[%d] from %v <= %v",
134135
f.o, replyICMPHdr.Type(), replyICMPHdr.Code(), len(replyICMPHdr), src, dst)
@@ -503,14 +504,14 @@ func l4l7(pkt *stack.PacketBuffer, sz uint32) ([]byte, error) {
503504
}
504505

505506
func l3l4(pkt *stack.PacketBuffer, sz int64) (b buffer.Buffer, err error) {
506-
l3 := pkt.NetworkHeader().View()
507-
l4 := pkt.TransportHeader().View()
508-
combined := buffer.MakeWithView(l3)
509-
if err = combined.Append(l4); err == nil {
510-
payload := pkt.Data().ToBuffer()
511-
combined.Merge(&payload)
512-
combined.Truncate(sz)
513-
b = combined
514-
}
515-
return
507+
l3 := pkt.NetworkHeader().View()
508+
l4 := pkt.TransportHeader().View()
509+
combined := buffer.MakeWithView(l3)
510+
if err = combined.Append(l4); err == nil {
511+
payload := pkt.Data().ToBuffer()
512+
combined.Merge(&payload)
513+
combined.Truncate(sz)
514+
b = combined
515+
}
516+
return
516517
}

0 commit comments

Comments
 (0)