diff --git a/go/mysql/conn.go b/go/mysql/conn.go index 3c50c947861..93c99645a5b 100644 --- a/go/mysql/conn.go +++ b/go/mysql/conn.go @@ -1465,10 +1465,15 @@ func (c *Conn) parseOKPacket(in []byte) (*PacketOK, error) { if c.Capabilities&uint32(CapabilityClientSessionTrack) == CapabilityClientSessionTrack { // session tracking if statusFlags&ServerSessionStateChanged == ServerSessionStateChanged { - _, ok := data.readLenEncInt() + length, ok := data.readLenEncInt() if !ok { return fail("invalid OK packet session state change length: %v", data) } + // In case we have a zero length string, there's no additional information so + // we can return the packet. + if length == 0 { + return packetOK, nil + } sscType, ok := data.readByte() if !ok { return fail("invalid OK packet session state change type: %v", sscType)