summaryrefslogtreecommitdiff
path: root/storage
diff options
context:
space:
mode:
authorOlivier Bertrand <bertrandop@gmail.com>2017-07-04 19:18:14 +0200
committerOlivier Bertrand <bertrandop@gmail.com>2017-07-04 19:18:14 +0200
commita9d32010d0ba36cc9b9d7fb58eeace687bb13f7a (patch)
treef6d6927034003841c3e72bc3e2171a21aec062db /storage
parent7542aff665183c0ca2130d6cf6f1dfa76d1f496f (diff)
downloadmariadb-git-a9d32010d0ba36cc9b9d7fb58eeace687bb13f7a.tar.gz
- Fix MDEV-13239 Suppress the restriction about no blanks
around , and = in the OPTION_LIST. modified: storage/connect/ha_connect.cc
Diffstat (limited to 'storage')
-rw-r--r--storage/connect/ha_connect.cc28
1 files changed, 23 insertions, 5 deletions
diff --git a/storage/connect/ha_connect.cc b/storage/connect/ha_connect.cc
index e5a56231a10..b0a37ea445a 100644
--- a/storage/connect/ha_connect.cc
+++ b/storage/connect/ha_connect.cc
@@ -1036,26 +1036,43 @@ PCSZ GetListOption(PGLOBAL g, PCSZ opname, PCSZ oplist, PCSZ def)
return (char*)def;
char key[16], val[256];
- char *pk, *pv, *pn;
+ char *pv, *pn, *pk= (char*)oplist;
PCSZ opval= def;
int n;
- for (pk= (char*)oplist; pk; pk= ++pn) {
+ while (*pk == ' ')
+ pk++;
+
+ for (; pk; pk= pn) {
pn= strchr(pk, ',');
pv= strchr(pk, '=');
if (pv && (!pn || pv < pn)) {
n = MY_MIN(static_cast<size_t>(pv - pk), sizeof(key) - 1);
memcpy(key, pk, n);
+
+ while (n && key[n - 1] == ' ')
+ n--;
+
key[n]= 0;
- pv++;
+
+ while(*(++pv) == ' ') ;
+
n= MY_MIN((pn ? pn - pv : strlen(pv)), sizeof(val) - 1);
memcpy(val, pv, n);
- val[n]= 0;
+
+ while (n && val[n - 1] == ' ')
+ n--;
+
+ val[n]= 0;
} else {
n= MY_MIN((pn ? pn - pk : strlen(pk)), sizeof(key) - 1);
memcpy(key, pk, n);
- key[n]= 0;
+
+ while (n && key[n - 1] == ' ')
+ n--;
+
+ key[n]= 0;
val[0]= 0;
} // endif pv
@@ -1065,6 +1082,7 @@ PCSZ GetListOption(PGLOBAL g, PCSZ opname, PCSZ oplist, PCSZ def)
} else if (!pn)
break;
+ while (*(++pn) == ' ') ;
} // endfor pk
return opval;