From 95f6786b3c8f6f2a5b735962a54a73f2c5c0c60f Mon Sep 17 00:00:00 2001 From: Johan Wikman Date: Thu, 17 Jan 2019 11:02:12 +0200 Subject: [PATCH 1/4] Update 2.3.3 release notes and change log --- Documentation/Changelog.md | 1 + .../MaxScale-2.3.3-Release-Notes.md | 44 +++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 Documentation/Release-Notes/MaxScale-2.3.3-Release-Notes.md diff --git a/Documentation/Changelog.md b/Documentation/Changelog.md index 0612cd59f..7f95a38e7 100644 --- a/Documentation/Changelog.md +++ b/Documentation/Changelog.md @@ -31,6 +31,7 @@ For more details, please refer to: +* [MariaDB MaxScale 2.3.3 Release Notes](Release-Notes/MaxScale-2.3.3-Release-Notes.md) * [MariaDB MaxScale 2.3.2 Release Notes](Release-Notes/MaxScale-2.3.2-Release-Notes.md) * [MariaDB MaxScale 2.3.1 Release Notes](Release-Notes/MaxScale-2.3.1-Release-Notes.md) * [MariaDB MaxScale 2.3.0 Release Notes](Release-Notes/MaxScale-2.3.0-Release-Notes.md) diff --git a/Documentation/Release-Notes/MaxScale-2.3.3-Release-Notes.md b/Documentation/Release-Notes/MaxScale-2.3.3-Release-Notes.md new file mode 100644 index 000000000..93ec32b6b --- /dev/null +++ b/Documentation/Release-Notes/MaxScale-2.3.3-Release-Notes.md @@ -0,0 +1,44 @@ +# MariaDB MaxScale 2.3.3 Release Notes + +Release 2.3.3 is a GA release. + +This document describes the changes in release 2.3.3, when compared to the +previous release in the same series. + +For any problems you encounter, please consider submitting a bug +report on [our Jira](https://jira.mariadb.org/projects/MXS). + +## Bug fixes + +* [MXS-2266](https://jira.mariadb.org/browse/MXS-2266) COM_STMT_CLOSE causes a warning to be logged +* [MXS-2259](https://jira.mariadb.org/browse/MXS-2259) Maxscale consumes large amounts of memory even with buffer limits set. +* [MXS-2258](https://jira.mariadb.org/browse/MXS-2258) GaleraMon crashes if it monitors a server that is not Galera-enabled +* [MXS-2248](https://jira.mariadb.org/browse/MXS-2248) INSERT sent to all nodes +* [MXS-2242](https://jira.mariadb.org/browse/MXS-2242) MaxScale does not recognize builtin read-only functions +* [MXS-2241](https://jira.mariadb.org/browse/MXS-2241) Conflicting parameters are not detected +* [MXS-2239](https://jira.mariadb.org/browse/MXS-2239) Crash in galeramon +* [MXS-2224](https://jira.mariadb.org/browse/MXS-2224) MaxScale 2.3.2 Memory leaks causes OOM +* [MXS-2217](https://jira.mariadb.org/browse/MXS-2217) maxscale crash with signal 11 +* [MXS-2214](https://jira.mariadb.org/browse/MXS-2214) Documentation examples use whitespace in object names, which is invalid +* [MXS-2207](https://jira.mariadb.org/browse/MXS-2207) qc_mysqlembedded does not classify SET STATEMENT ... FOR UPDATE correctly. +* [MXS-2200](https://jira.mariadb.org/browse/MXS-2200) Setting a static variable via maxctrl gives a non accurate error message "Unknown global parameter" + +## Known Issues and Limitations + +There are some limitations and known issues within this version of MaxScale. +For more information, please refer to the [Limitations](../About/Limitations.md) document. + +## Packaging + +RPM and Debian packages are provided for supported the Linux distributions. + +Packages can be downloaded [here](https://mariadb.com/downloads/mariadb-tx/maxscale). + +## Source Code + +The source code of MaxScale is tagged at GitHub with a tag, which is identical +with the version of MaxScale. For instance, the tag of version X.Y.Z of MaxScale +is `maxscale-X.Y.Z`. Further, the default branch is always the latest GA version +of MaxScale. + +The source code is available [here](https://github.com/mariadb-corporation/MaxScale). From 2e95812b713b127811c9db927f353663eb8d5793 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20M=C3=A4kel=C3=A4?= Date: Fri, 18 Jan 2019 09:58:55 +0200 Subject: [PATCH 2/4] Fix buffer overrun on non-terminated comment Also made the behavior consistent when an incomplete comment is found. --- server/core/modutil.cc | 14 +++++++++++++- server/core/test/canonical_tests/comment.expected | 4 ++++ server/core/test/canonical_tests/comment.sql | 4 ++++ 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/server/core/modutil.cc b/server/core/modutil.cc index ce0d35a20..a425d55d1 100644 --- a/server/core/modutil.cc +++ b/server/core/modutil.cc @@ -1466,7 +1466,11 @@ std::string get_canonical(GWBUF* querybuf) else if (*it == '/' && is_next(it, buf.end(), "/*")) { auto comment_start = std::next(it, 2); - if (comment_start != buf.end() && *comment_start != '!' && *comment_start != 'M') + if (comment_start == buf.end()) + { + break; + } + else if (*comment_start != '!' && *comment_start != 'M') { // Non-executable comment while (it != buf.end()) @@ -1479,6 +1483,11 @@ std::string get_canonical(GWBUF* querybuf) } ++it; } + + if (it == buf.end()) + { + break; + } } else { @@ -1507,6 +1516,7 @@ std::string get_canonical(GWBUF* querybuf) ++it; } + if (it == buf.end()) { break; @@ -1545,6 +1555,8 @@ std::string get_canonical(GWBUF* querybuf) { rval[i++] = *it; } + + mxb_assert(it != buf.end()); } // Shrink the buffer so that the internal bookkeeping of std::string remains up to date diff --git a/server/core/test/canonical_tests/comment.expected b/server/core/test/canonical_tests/comment.expected index e0d89b991..5b7da71a1 100644 --- a/server/core/test/canonical_tests/comment.expected +++ b/server/core/test/canonical_tests/comment.expected @@ -9,3 +9,7 @@ SELECT ? /*! +? */; SELECT ? /*!? +? */; SELECT ? /*M! +? */; SELECT ? /*M!? +? */; +SELECT ? +SELECT ? +SELECT ? +SELECT ? diff --git a/server/core/test/canonical_tests/comment.sql b/server/core/test/canonical_tests/comment.sql index 904752017..181f6db1f 100644 --- a/server/core/test/canonical_tests/comment.sql +++ b/server/core/test/canonical_tests/comment.sql @@ -9,3 +9,7 @@ SELECT 1 /*! +1 */; SELECT 1 /*!50101 +1 */; SELECT 2 /*M! +1 */; SELECT 2 /*M!50101 +1 */; +SELECT 2 /* +SELECT 2 /* +SELECT 2 /*/ +SELECT 2 /**/ From 28644e9626ad16cb30a2f715b8fa9e3a8df5583b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20M=C3=A4kel=C3=A4?= Date: Fri, 18 Jan 2019 10:25:12 +0200 Subject: [PATCH 3/4] Fix quoted value skipping The return value wasn't checked and the code assumed that a non-end iterator was always returned. --- server/core/modutil.cc | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/server/core/modutil.cc b/server/core/modutil.cc index a425d55d1..3c2b285a7 100644 --- a/server/core/modutil.cc +++ b/server/core/modutil.cc @@ -1540,13 +1540,19 @@ std::string get_canonical(GWBUF* querybuf) else if (*it == '\'' || *it == '"') { char c = *it; - it = find_char(std::next(it), buf.end(), c); + if ((it = find_char(std::next(it), buf.end(), c)) == buf.end()) + { + break; + } rval[i++] = '?'; } else if (*it == '`') { auto start = it; - it = find_char(std::next(it), buf.end(), '`'); + if ((it = find_char(std::next(it), buf.end(), '`')) == buf.end()) + { + break; + } std::copy(start, it, &rval[i]); i += std::distance(start, it); rval[i++] = '`'; From b4de91e02ef8b053e45028468b51600d27b23730 Mon Sep 17 00:00:00 2001 From: Johan Wikman Date: Mon, 21 Jan 2019 13:28:30 +0200 Subject: [PATCH 4/4] Update 2.3.3 release date --- Documentation/Release-Notes/MaxScale-2.3.3-Release-Notes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/Release-Notes/MaxScale-2.3.3-Release-Notes.md b/Documentation/Release-Notes/MaxScale-2.3.3-Release-Notes.md index 93ec32b6b..fdd4d44b9 100644 --- a/Documentation/Release-Notes/MaxScale-2.3.3-Release-Notes.md +++ b/Documentation/Release-Notes/MaxScale-2.3.3-Release-Notes.md @@ -1,4 +1,4 @@ -# MariaDB MaxScale 2.3.3 Release Notes +# MariaDB MaxScale 2.3.3 Release Notes -- 2019-01-21 Release 2.3.3 is a GA release.