diff options
author | Nirbhay Choubey <nirbhay@mariadb.com> | 2016-08-22 21:27:20 -0400 |
---|---|---|
committer | Nirbhay Choubey <nirbhay@mariadb.com> | 2016-08-22 21:27:20 -0400 |
commit | 2024cddaa412e7c4a2aff8bb50907868155019da (patch) | |
tree | abe7286a1afec828fbcdd6966f51185ae111a6bc /sql | |
parent | 3ac0721a3c8eecf8843b527cdc4d08c20edb6268 (diff) | |
download | mariadb-git-2024cddaa412e7c4a2aff8bb50907868155019da.tar.gz |
MDEV-10518: Large wsrep_gtid_domain_id may break IST
wsrep_gtid_domain_id was incorrectly being parsed and stored
as a signed long number on the joiner node.
Diffstat (limited to 'sql')
-rw-r--r-- | sql/wsrep_sst.cc | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/sql/wsrep_sst.cc b/sql/wsrep_sst.cc index be10d2762a0..d88263d75cb 100644 --- a/sql/wsrep_sst.cc +++ b/sql/wsrep_sst.cc @@ -477,7 +477,7 @@ static void* sst_joiner_thread (void* a) } else { // Scan state ID first followed by wsrep_gtid_domain_id. char uuid[512]; - long int domain_id; + unsigned long int domain_id; size_t len= pos - out + 1; if (len > sizeof(uuid)) goto err; // safety check @@ -491,11 +491,11 @@ static void* sst_joiner_thread (void* a) else if (wsrep_gtid_mode) { errno= 0; /* Reset the errno */ - domain_id= strtol(pos + 1, NULL, 10); + domain_id= strtoul(pos + 1, NULL, 10); err= errno; /* Check if we received a valid gtid_domain_id. */ - if (err == EINVAL || err == ERANGE || domain_id < 0x0 || domain_id > 0xFFFF) + if (err == EINVAL || err == ERANGE) { WSREP_ERROR("Failed to get donor wsrep_gtid_domain_id."); err= EINVAL; |