diff options
author | Olivier Bertrand <bertrandop@gmail.com> | 2017-07-04 19:18:14 +0200 |
---|---|---|
committer | Olivier Bertrand <bertrandop@gmail.com> | 2017-07-04 19:18:14 +0200 |
commit | a9d32010d0ba36cc9b9d7fb58eeace687bb13f7a (patch) | |
tree | f6d6927034003841c3e72bc3e2171a21aec062db /storage | |
parent | 7542aff665183c0ca2130d6cf6f1dfa76d1f496f (diff) | |
download | mariadb-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.cc | 28 |
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; |