From 654dcab93eedc3cbd6ebcf6f8d1d950f314d18d4 Mon Sep 17 00:00:00 2001 From: Jack Christensen Date: Fri, 23 Feb 2024 17:40:11 -0600 Subject: [PATCH] Fix: pgtype.Bits makes copy of data from read buffer It was taking a reference. This would cause the data to be corrupted by future reads. fixes #1909 --- pgtype/bits.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pgtype/bits.go b/pgtype/bits.go index 30558118..e7a1d016 100644 --- a/pgtype/bits.go +++ b/pgtype/bits.go @@ -176,8 +176,10 @@ func (scanPlanBinaryBitsToBitsScanner) Scan(src []byte, dst any) error { bitLen := int32(binary.BigEndian.Uint32(src)) rp := 4 + buf := make([]byte, len(src[rp:])) + copy(buf, src[rp:]) - return scanner.ScanBits(Bits{Bytes: src[rp:], Len: bitLen, Valid: true}) + return scanner.ScanBits(Bits{Bytes: buf, Len: bitLen, Valid: true}) } type scanPlanTextAnyToBitsScanner struct{}