From e39af550f8ea57504510dc5d5fa70ba934f16fa0 Mon Sep 17 00:00:00 2001 From: apocelipes Date: Wed, 20 Mar 2024 05:33:46 +0000 Subject: [PATCH] database/sql: fix memory leaks in Stmt.removeClosedStmtLocked Zero out elements before shrinking the slice to avoid memory leaks. Fixes #66410 Change-Id: I8f64c21455761f7f7c8b6fee0b6450b98f691d91 GitHub-Last-Rev: b15586e801199b9674f5bfcb12a848a55f15a80b GitHub-Pull-Request: golang/go#66419 Reviewed-on: https://go-review.googlesource.com/c/go/+/572956 TryBot-Result: Gopher Robot LUCI-TryBot-Result: Go LUCI Reviewed-by: David Chase Reviewed-by: Keith Randall Reviewed-by: Emmanuel Odeke Run-TryBot: Emmanuel Odeke --- src/database/sql/sql.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/database/sql/sql.go b/src/database/sql/sql.go index b5facdbf2a..36995a1059 100644 --- a/src/database/sql/sql.go +++ b/src/database/sql/sql.go @@ -2684,6 +2684,8 @@ func (s *Stmt) removeClosedStmtLocked() { for i := 0; i < len(s.css); i++ { if s.css[i].dc.dbmuClosed { s.css[i] = s.css[len(s.css)-1] + // Zero out the last element (for GC) before shrinking the slice. + s.css[len(s.css)-1] = connStmt{} s.css = s.css[:len(s.css)-1] i-- } -- 2.50.0