Bug #49248 | Proxy crashes when attempting to access resultset.fields on an error packet | ||
---|---|---|---|
Submitted: | 1 Dec 2009 3:34 | Modified: | 9 Jan 2015 16:01 |
Reporter: | Lachlan Mulcahy | Email Updates: | |
Status: | Can't repeat | Impact on me: | |
Category: | MySQL Proxy: Core | Severity: | S2 (Serious) |
Version: | 0.7.2 | OS: | Any |
Assigned to: | Assigned Account | CPU Architecture: | Any |
[1 Dec 2009 3:34]
Lachlan Mulcahy
[1 Dec 2009 6:35]
Alexey Kishkin
verified, but it requires little bit more than just read_query_result: - must be function read_query() as well, which must return proxy.PROXY_SEND_QUERY and use {resultset_is_neede=true} in the proxy.query:append(). I use following procedure for verification lua file ax.lua: walrus@walrus-note:~$ cat mp/ax.lua function read_query( packet ) if string.byte(packet) == proxy.COM_QUERY then local query = string.sub(packet, 2) print("we got a normal query: " .. query) local f_s, f_e, command = string.find(packet, "^%s*(%w+)", 2) local option if f_e then f_s, f_e, option = string.find(packet, "^%s+(%w+)", f_e + 1) end if command == "bug" then proxy.queries:append(1, string.char(proxy.COM_QUERY) .. "BUG" , {resultset_is_needed = true}) return proxy.PROXY_SEND_QUERY elseif command == "who" then proxy.queries:append(1, string.char(proxy.COM_QUERY) .. "SHOW PROCESSLIST" ) return proxy.PROXY_SEND_QUERY end end end function read_query_result ( inj ) print("Script invocation ".. inj.type) fields = inj.resultset.fields return end run mysql proxy as: sbin/mysql-proxy --proxy-backend-addresses=127.0.0.1:3306 --proxy-lua-script=ax.lua --log-level=debug --log-file=logfile1.log then in another xterm: walrus@walrus-note:~$ mysql -h 127.0.0.1 -P 4040 mysql> abc; ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'abc' at line 1 mysql> bug; ERROR 2013 (HY000): Lost connection to MySQL server during query in the mysql-proxy window appears: we got a normal query: abc we got a normal query: bug Script invocation 1 ** ** ERROR:(network-mysqld-packet.c:668):???: assertion failed: (chunk) Abort (core dumped)