summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Lindström <jan.lindstrom@mariadb.com>2020-08-24 16:50:53 +0300
committerJan Lindström <jan.lindstrom@mariadb.com>2020-08-24 19:57:20 +0300
commit48a110eb0b2611aea7a05b128fcfa024dafb21a5 (patch)
tree25c5c97ef44d2e29a27fd8ad6396549d66f11ced
parentd03ddf3c1955ddb969eab1debe5581b301d70a18 (diff)
downloadmariadb-git-bb-10.4-MDEV-22055.tar.gz
MDEV-23558: Galera heap-buffer-overflow at wsrep_schema.cc:1067bb-10.4-MDEV-22055
Key buffer needs to contain max field widths i.e. add MAX_FIELD_WIDTH.
-rw-r--r--sql/wsrep_schema.cc6
1 files changed, 3 insertions, 3 deletions
diff --git a/sql/wsrep_schema.cc b/sql/wsrep_schema.cc
index 619a535f916..df9c7b78c9b 100644
--- a/sql/wsrep_schema.cc
+++ b/sql/wsrep_schema.cc
@@ -935,7 +935,7 @@ int Wsrep_schema::update_fragment_meta(THD* thd,
Wsrep_schema_impl::binlog_off binlog_off(thd);
int error;
- uchar key[MAX_KEY_LENGTH];
+ uchar key[MAX_KEY_LENGTH+MAX_FIELD_WIDTH];
key_part_map key_map= 0;
TABLE* frag_table= 0;
@@ -997,7 +997,7 @@ static int remove_fragment(THD* thd,
seqno.get());
int ret= 0;
int error;
- uchar key[MAX_KEY_LENGTH];
+ uchar key[MAX_KEY_LENGTH+MAX_FIELD_WIDTH];
key_part_map key_map= 0;
DBUG_ASSERT(server_id.is_undefined() == false);
@@ -1120,7 +1120,7 @@ int Wsrep_schema::replay_transaction(THD* orig_thd,
int ret= 1;
int error;
TABLE* frag_table= 0;
- uchar key[MAX_KEY_LENGTH];
+ uchar key[MAX_KEY_LENGTH+MAX_FIELD_WIDTH];
key_part_map key_map= 0;
for (std::vector<wsrep::seqno>::const_iterator i= fragments.begin();