Use correct function for consuming LEncStrings

Length-encoded strings should be consumed with the correct
functions. Doing pointer arithmetic with the same pointer as a parameter
appears to fail only on CentOS 6 whereas on newer systems it performs as
expected.
This commit is contained in:
Markus Mäkelä
2018-01-24 20:30:02 +02:00
parent 6b877de5bc
commit 7b04d17ce3

View File

@ -1791,7 +1791,9 @@ void mxs_mysql_parse_ok_packet(GWBUF *buff, size_t packet_offset, size_t packet_
if (ptr < (local_buf + packet_len)) if (ptr < (local_buf + packet_len))
{ {
ptr += mxs_leint_consume(&ptr); // info size_t size;
mxs_lestr_consume(&ptr, &size); // info
if (server_status & SERVER_SESSION_STATE_CHANGED) if (server_status & SERVER_SESSION_STATE_CHANGED)
{ {
mxs_leint_consume(&ptr); // total SERVER_SESSION_STATE_CHANGED length mxs_leint_consume(&ptr); // total SERVER_SESSION_STATE_CHANGED length
@ -1807,7 +1809,7 @@ void mxs_mysql_parse_ok_packet(GWBUF *buff, size_t packet_offset, size_t packet_
case SESSION_TRACK_STATE_CHANGE: case SESSION_TRACK_STATE_CHANGE:
case SESSION_TRACK_SCHEMA: case SESSION_TRACK_SCHEMA:
case SESSION_TRACK_GTIDS: case SESSION_TRACK_GTIDS:
ptr += mxs_leint_consume(&ptr); mxs_lestr_consume(&ptr, &size);
break; break;
case SESSION_TRACK_TRANSACTION_CHARACTERISTICS: case SESSION_TRACK_TRANSACTION_CHARACTERISTICS:
mxs_leint_consume(&ptr); //length mxs_leint_consume(&ptr); //length
@ -1833,7 +1835,7 @@ void mxs_mysql_parse_ok_packet(GWBUF *buff, size_t packet_offset, size_t packet_
MXS_FREE(trx_info); MXS_FREE(trx_info);
break; break;
default: default:
ptr += mxs_leint_consume(&ptr); mxs_lestr_consume(&ptr, &size);
MXS_WARNING("recieved unexpecting session track type:%d", type); MXS_WARNING("recieved unexpecting session track type:%d", type);
break; break;
} }