Pārlūkot izejas kodu

prevent double release in buffer

v2ray 9 gadi atpakaļ
vecāks
revīzija
be90c04deb
1 mainītis faili ar 6 papildinājumiem un 2 dzēšanām
  1. 6 2
      common/alloc/buffer.go

+ 6 - 2
common/alloc/buffer.go

@@ -166,10 +166,14 @@ func (p *bufferPool) allocate() *Buffer {
 }
 
 func (p *bufferPool) free(buffer *Buffer) {
+	rawBuffer := buffer.head
+	if rawBuffer == nil {
+		return
+	}
 	select {
-	case p.chain <- buffer.head:
+	case p.chain <- rawBuffer:
 	default:
-		p.allocator.Put(buffer.head)
+		p.allocator.Put(rawBuffer)
 	}
 }