From: Gwenael Treguier Date: Fri, 11 Jan 2013 21:28:33 +0000 (-0800) Subject: database/sql: check NumInput on Stmt.Exec X-Git-Tag: go1.1rc2~1413 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=7f0449a1086dce557c6071c951cfec8664e8d456;p=gostls13.git database/sql: check NumInput on Stmt.Exec Fixes #3678. R=golang-dev, bradfitz CC=golang-dev https://golang.org/cl/6460087 --- diff --git a/src/pkg/database/sql/sql.go b/src/pkg/database/sql/sql.go index e7c7780ef2..31fc830bb3 100644 --- a/src/pkg/database/sql/sql.go +++ b/src/pkg/database/sql/sql.go @@ -369,16 +369,7 @@ func (db *DB) exec(query string, args []interface{}) (res Result, err error) { } defer sti.Close() - dargs, err := driverArgs(sti, args) - if err != nil { - return nil, err - } - - resi, err := sti.Exec(dargs) - if err != nil { - return nil, err - } - return result{resi}, nil + return resultFromStatement(sti, args...) } // Query executes a query that returns rows, typically a SELECT. @@ -608,16 +599,7 @@ func (tx *Tx) Exec(query string, args ...interface{}) (Result, error) { } defer sti.Close() - dargs, err := driverArgs(sti, args) - if err != nil { - return nil, err - } - - resi, err := sti.Exec(dargs) - if err != nil { - return nil, err - } - return result{resi}, nil + return resultFromStatement(sti, args...) } // Query executes a query that returns rows, typically a SELECT. @@ -682,6 +664,10 @@ func (s *Stmt) Exec(args ...interface{}) (Result, error) { } defer releaseConn(nil) + return resultFromStatement(si, args...) +} + +func resultFromStatement(si driver.Stmt, args ...interface{}) (Result, error) { // -1 means the driver doesn't know how to count the number of // placeholders, so we won't sanity check input here and instead let the // driver deal with errors.