]> Cypherpunks repositories - gostls13.git/commitdiff
[release-branch.go1.10] database/sql: check for nil connRequest.conn before use
authorDaniel Theophanes <kardianos@gmail.com>
Sun, 25 Mar 2018 23:58:27 +0000 (16:58 -0700)
committerBrad Fitzpatrick <bradfitz@golang.org>
Thu, 1 Nov 2018 22:08:28 +0000 (22:08 +0000)
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.

Updates #24445
Fixes #25235

Change-Id: I827316e856788a5a3ced913f129bb5869b7bcf68
Reviewed-on: https://go-review.googlesource.com/102477
Run-TryBot: Daniel Theophanes <kardianos@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Alexey Palazhchenko <alexey.palazhchenko@gmail.com>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
(cherry picked from commit b98ffdf859f0fec2acb1765bf5b62ce1e4587c2b)
Reviewed-on: https://go-review.googlesource.com/c/146778
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Katie Hockman <katie@golang.org>
src/database/sql/sql.go

index 8f5588ed2680886be6766e68d0feb8b77e5d9e29..719be91043b671fcdb3b0cafb487fbb427b1662b 100644 (file)
@@ -1070,7 +1070,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)
                                }
                        }