From dd9f7fbbb792b0428a63bb3516a1bd18d353c4f5 Mon Sep 17 00:00:00 2001 From: Markus Makela Date: Fri, 4 Mar 2016 09:54:17 +0200 Subject: [PATCH] Fixed rwsplit length calculations for multi-statements The calculations used the amount of bytes read instead of amount of bytes available and also read one byte too much. --- server/modules/routing/readwritesplit/readwritesplit.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/modules/routing/readwritesplit/readwritesplit.c b/server/modules/routing/readwritesplit/readwritesplit.c index 5c0ae9509..bcaf33b49 100644 --- a/server/modules/routing/readwritesplit/readwritesplit.c +++ b/server/modules/routing/readwritesplit/readwritesplit.c @@ -5368,9 +5368,9 @@ static void check_for_multi_stmt(ROUTER_CLIENT_SES* rses, GWBUF *buf, if ((ptr = strnchr_esc_mysql(data, ';', buflen))) { /** Skip stored procedures etc. */ - while (ptr && is_mysql_sp_end(ptr, ptr - data)) + while (ptr && is_mysql_sp_end(ptr, buflen - (ptr - data))) { - ptr = strnchr_esc_mysql(ptr + 1, ';', ptr - data); + ptr = strnchr_esc_mysql(ptr + 1, ';', buflen - (ptr - data) - 1); } if (ptr)