From 7b04d17ce37ddac90bc574ac0a5ab436798e2643 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20M=C3=A4kel=C3=A4?= Date: Wed, 24 Jan 2018 20:30:02 +0200 Subject: [PATCH] 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. --- server/modules/protocol/MySQL/mysql_common.cc | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/server/modules/protocol/MySQL/mysql_common.cc b/server/modules/protocol/MySQL/mysql_common.cc index 480bfccad..8ddc4b818 100644 --- a/server/modules/protocol/MySQL/mysql_common.cc +++ b/server/modules/protocol/MySQL/mysql_common.cc @@ -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)) { - ptr += mxs_leint_consume(&ptr); // info + size_t size; + mxs_lestr_consume(&ptr, &size); // info + if (server_status & SERVER_SESSION_STATE_CHANGED) { 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_SCHEMA: case SESSION_TRACK_GTIDS: - ptr += mxs_leint_consume(&ptr); + mxs_lestr_consume(&ptr, &size); break; case SESSION_TRACK_TRANSACTION_CHARACTERISTICS: 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); break; default: - ptr += mxs_leint_consume(&ptr); + mxs_lestr_consume(&ptr, &size); MXS_WARNING("recieved unexpecting session track type:%d", type); break; }