summaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authorNirbhay Choubey <nirbhay@mariadb.com>2016-08-22 21:27:20 -0400
committerNirbhay Choubey <nirbhay@mariadb.com>2016-08-22 21:27:20 -0400
commit2024cddaa412e7c4a2aff8bb50907868155019da (patch)
treeabe7286a1afec828fbcdd6966f51185ae111a6bc /sql
parent3ac0721a3c8eecf8843b527cdc4d08c20edb6268 (diff)
downloadmariadb-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.cc6
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;