diff --git a/CHANGELOG.md b/CHANGELOG.md index 2df2f83a2..6414efa1b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,4 @@ +* Fixed panic when error returned from parsing sql params * Fixed explicit null dereferenced issue in internal/credentials/static.go (CWE-476) ## v3.99.1 diff --git a/internal/bind/params.go b/internal/bind/params.go index ddf2e0c1e..83ba0afb6 100644 --- a/internal/bind/params.go +++ b/internal/bind/params.go @@ -315,8 +315,8 @@ func toValue(v interface{}) (_ value.Value, err error) { vv, err := toValue(v.Field(i).Interface()) if err != nil { return nil, xerrors.WithStackTrace( - fmt.Errorf("cannot parse %v as values of dict: %w", - v.Index(i).Interface(), err, + fmt.Errorf("cannot parse %v as values of struct: %w", + v.Field(i).Interface(), err, ), ) } diff --git a/internal/bind/params_test.go b/internal/bind/params_test.go index 67970f993..c6c89d3ca 100644 --- a/internal/bind/params_test.go +++ b/internal/bind/params_test.go @@ -425,6 +425,16 @@ func TestToValue(t *testing.T) { )), err: nil, }, + { + name: xtest.CurrentFileLine(), + src: struct { + A struct { + Unsupported string + } `sql:"A"` + }{}, + dst: nil, + err: errUnsupportedType, + }, { name: xtest.CurrentFileLine(), src: []uint64{123, 123, 123, 123, 123, 123},