Skip to content

Commit 0c0b817

Browse files
authored
Merge pull request #655 from lance6716/fix
Fix malformed packet and a panic
2 parents 400546f + 4ad9b0c commit 0c0b817

File tree

3 files changed

+11
-10
lines changed

3 files changed

+11
-10
lines changed

client/client_test.go

+3-1
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,10 @@ func (s *clientTestSuite) SetUpSuite(c *C) {
2525
c.Fatal(err)
2626
}
2727

28-
_, err = s.c.Execute("CREATE DATABASE IF NOT EXISTS " + *testDB)
28+
var result *mysql.Result
29+
result, err = s.c.Execute("CREATE DATABASE IF NOT EXISTS " + *testDB)
2930
c.Assert(err, IsNil)
31+
c.Assert(result.RowNumber() >= 0, IsTrue)
3032

3133
_, err = s.c.Execute("USE " + *testDB)
3234
c.Assert(err, IsNil)

client/resp.go

+5-9
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ func (c *Conn) handleOKPacket(data []byte) (*Result, error) {
4040
var n int
4141
var pos = 1
4242

43-
r := &Result{Resultset: &Resultset{}}
43+
r := new(Result)
4444

4545
r.AffectedRows, _, n = LengthEncodedInt(data[pos:])
4646
pos += n
@@ -128,11 +128,8 @@ func (c *Conn) handleAuthResult() error {
128128
return nil // auth already succeeded
129129
}
130130
if data[0] == CACHE_SHA2_FAST_AUTH {
131-
if _, err = c.readOK(); err == nil {
132-
return nil // auth successful
133-
} else {
134-
return err
135-
}
131+
_, err = c.readOK()
132+
return err
136133
} else if data[0] == CACHE_SHA2_FULL_AUTH {
137134
// need full authentication
138135
if c.tlsConfig != nil || c.proto == "unix" {
@@ -144,9 +141,8 @@ func (c *Conn) handleAuthResult() error {
144141
return err
145142
}
146143
}
147-
if _, err = c.readOK(); err != nil {
148-
return err
149-
}
144+
_, err = c.readOK()
145+
return err
150146
} else {
151147
return errors.Errorf("invalid packet %x", data[0])
152148
}

mysql/resultset.go

+3
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,9 @@ func (r *Resultset) Reset(fieldsCount int) {
6767
}
6868

6969
func (r *Resultset) RowNumber() int {
70+
if r == nil {
71+
return 0
72+
}
7073
return len(r.Values)
7174
}
7275

0 commit comments

Comments
 (0)