Bug #39085 MyODBC 5.1 fails to connect if connection string parameters have preceding space
Submitted: 28 Aug 2008 10:55 Modified: 26 Nov 2008 12:28
Reporter: Bogdan Degtyariov
Status: Closed
Category:Connector/ODBC Severity:S2 (Serious)
Version:5.1.5 OS:Any
Assigned to: Bogdan Degtyariov Target Version:
Tags: SQLConnect, connection string

[28 Aug 2008 10:55] Bogdan Degtyariov
Description:
MyODBC Driver 5.1.5 (unlikely to 3.51) is not able to connect if connection string
parameters contain spaces or tab symbols. For instance if specify the SERVER parameter as
"SERVER= localhost" instead of "SERVER=localhost" the following error message will be
displayed:

[MySQL][ODBC 5.1 Driver] Unknown MySQL server host ' localhost' (11001).

How to repeat:
Use the following connection string to connect to MySQL server:

"DRIVER={MySQL ODBC 5.1 Driver};SERVER=
localhost;USER=dbuser;PASSWORD=******;DATABASE=mydatabase;"

Suggested fix:
=== modified file 'util/stringutil.c'
--- util/stringutil.c	2008-04-15 08:03:35 +0000
+++ util/stringutil.c	2008-08-28 08:40:28 +0000
@@ -526,7 +526,12 @@
 {
   while (*wstr != wchr && *wstr++);
   if (*wstr == wchr)
+  {
+    while(((*(wstr + 1) == (SQLWCHAR)' ') ||
+           (*(wstr + 1) == (SQLWCHAR)'\t')) &&
+          *wstr++);
     return wstr;
+  }
   else
     return NULL;
 }

(the full bzr diff with the test case is coming soon)
[28 Aug 2008 14:37] Bogdan Degtyariov
Bug fix

Attachment: patch39085.diff (application/octet-stream, text), 1.89 KiB.

[29 Aug 2008 1:43] Jim Winstead
I don't think that adding this to sqlwcharchr() is correct. Calls to
sqlwcharignorespaces() could (should?) be added in spots like ds_from_kvpair().
[29 Aug 2008 13:28] Bogdan Degtyariov
patch v2 and test case

Attachment: patch39085v2.diff (application/octet-stream, text), 2.10 KiB.

[29 Aug 2008 13:29] Bogdan Degtyariov
Jim,

thanks for your comment. Please take a look at the 2nd version of the patch
[29 Aug 2008 23:56] Jim Winstead
except for the incorrect tab usage, it looks fine. please double-check your commits for
whitespace issues (tabs, \r, etc, not the whitespace the issue is about).
[3 Sep 2008 0:18] Jess Balint
Should this also handle spaces after the value, before the ';' or end? eg, "user=  jess 
;pwd=123"
[16 Sep 2008 6:39] Bogdan Degtyariov
New patch that cuts spaces before and after the connection string option

Attachment: patch39085v4.diff (application/octet-stream, text), 2.23 KiB.

[26 Nov 2008 12:28] Tony Bedford
An entry was added to the 5.1.6 changelog:

MyODBC Driver 5.1.5 was not able to connect if the connection string parameters contained
spaces or tab symbols. For example, if the SERVER parameter was specified as “SERVER=
localhost” instead of “SERVER=localhost” the following error message will be
displayed:

[MySQL][ODBC 5.1 Driver] Unknown MySQL server host ' localhost' (11001).