From: Daniel Theophanes Date: Sun, 25 Mar 2018 23:58:27 +0000 (-0700) Subject: database/sql: check for nil connRequest.conn before use X-Git-Tag: go1.11beta1~446 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=b98ffdf859f0fec2acb1765bf5b62ce1e4587c2b;p=gostls13.git database/sql: check for nil connRequest.conn before use The connRequest may return a nil conn value. However in a rare case that is difficult to test for it was being passed to DB.putConn without a nil check. This was an error as this made no sense if the driverConn is nil. This also caused a panic in putConn. A test for this would be nice, but didn't find a sane way to test for this condition. Fixes #24445 Change-Id: I827316e856788a5a3ced913f129bb5869b7bcf68 Reviewed-on: https://go-review.googlesource.com/102477 Run-TryBot: Daniel Theophanes TryBot-Result: Gobot Gobot Reviewed-by: Alexey Palazhchenko Reviewed-by: Brad Fitzpatrick --- diff --git a/src/database/sql/sql.go b/src/database/sql/sql.go index ec7b526150..142ec027d8 100644 --- a/src/database/sql/sql.go +++ b/src/database/sql/sql.go @@ -1098,7 +1098,7 @@ func (db *DB) conn(ctx context.Context, strategy connReuseStrategy) (*driverConn select { default: case ret, ok := <-req: - if ok { + if ok && ret.conn != nil { db.putConn(ret.conn, ret.err, false) } }