Bug #61586 | sqlwcharchr might read one SQLWCHAR after end of string | ||
---|---|---|---|
Submitted: | 21 Jun 2011 12:19 | Modified: | 25 Jan 2012 23:18 |
Reporter: | Jiri Dvorak | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | Connector / ODBC | Severity: | S2 (Serious) |
Version: | 5.1.8 | OS: | Any |
Assigned to: | Bogdan Degtyariov | CPU Architecture: | Any |
[21 Jun 2011 12:19]
Jiri Dvorak
[22 Jun 2011 11:20]
Bogdan Degtyariov
Jiri, Probably you forgot to copy/paste the code fragment into your problem description because I do not see the if() statement you are talking about.
[22 Jun 2011 14:47]
Jiri Dvorak
Sorry. My knowledge of the english language is limited. I was talking about 'if' statement "following in the function source code" and not "following in my description". The code I am talking about is present in the mysql-connector-odbc-5.1.8 source code in the util/stringutil.c in function sqlwcharchr. That function (pasted bellow) contains only one if. const SQLWCHAR *sqlwcharchr(const SQLWCHAR *wstr, SQLWCHAR wchr) { while (*wstr != wchr && *wstr++); if (*wstr == wchr) return wstr; else return NULL; }
[3 Aug 2011 12:50]
Bogdan Degtyariov
Verified, the problem exists.
[3 Aug 2011 12:54]
Bogdan Degtyariov
=== modified file 'util/stringutil.c' --- util/stringutil.c 2010-08-19 15:37:55 +0000 +++ util/stringutil.c 2011-08-03 12:53:02 +0000 @@ -526,11 +526,15 @@ */ const SQLWCHAR *sqlwcharchr(const SQLWCHAR *wstr, SQLWCHAR wchr) { - while (*wstr != wchr && *wstr++); - if (*wstr == wchr) - return wstr; - else - return NULL; + while (*wstr) + { + if (*wstr == wchr) + { + return wstr; + } + ++wstr; + } + return NULL; }
[3 Aug 2011 12:57]
Bogdan Degtyariov
An the entry for CHANGELOG: === modified file 'ChangeLog' --- ChangeLog 2011-02-04 20:03:09 +0000 +++ ChangeLog 2011-08-03 12:56:44 +0000 @@ -3,7 +3,7 @@ Bugs fixed: * SQLFetch() did not return SQL_ERROR if connection was dropped due to a timeout. (Bug #39878) - + * sqlwcharchr might read one SQLWCHAR after end of string. (Bug #61586) ---- 5.1.8 (08-Nov-2010)
[3 Aug 2011 13:04]
Lawrenty Novitsky
pushed to the trunk as rev#979
[25 Jan 2012 23:18]
Philip Olson
This was already documented, as: An off-by-one error, where <literal>sqlwcharchr</literal> might read one <literal>SQLWCHAR</literal> after the end of a string. So, closing.