Thread: Problem with special characters in password when using SQLDriverConnect
Problem with special characters in password when using SQLDriverConnect
From
"Jan-Peter Seifert"
Date:
Hello, if you use SQLDriverConnect instead of SQLConnect the connection fails on special characters like ';', '(', ')' and '+'(?)within the password. According to the documentation ( http://msdn.microsoft.com/en-us/library/windows/desktop/ms715433%28v=vs.85%29.aspx ) []{}(),;?*=!@ are special characters. In order to pass the connection string to the driver intact you have to bracket the whole connection string ( or just thevalues ? - it looks like my English is not good enough for this article ). There already had been a patch in 09.00.0100 but this problem obviously persists in psqlODBC 09.01.0100 Unicode. Maybe thishas been patched in the ANSI version only? Backslashes are still a problem? I wonder whether standard_conforming_strings has an effect on embedded backslashes. Could you check, please? Thank you very much, Peter
Re: Problem with special characters in password when using SQLDriverConnect
From
Hiroshi Inoue
Date:
Hi, (2013/05/13 23:04), Jan-Peter Seifert wrote: > > Hello, > > if you use SQLDriverConnect instead of SQLConnect the connection fails on special characters like ';', '(', ')' and '+'(?)within the password. > > According to the documentation ( http://msdn.microsoft.com/en-us/library/windows/desktop/ms715433%28v=vs.85%29.aspx ) []{}(),;?*=!@ are special characters. > > In order to pass the connection string to the driver intact you have to bracket the whole connection string ( or just thevalues ? - it looks like my English is not good enough for this article ). > > There already had been a patch in 09.00.0100 but this problem obviously persists in psqlODBC 09.01.0100 Unicode. Maybethis has been patched in the ANSI version only? I don't understand why ANSI drivers work. Could you please try the dll on testing for 9.1.0300 at http://www.ne.jp/asahi/inocchichichi/entrance/psqlodbc/index.html ? regards, Hiroshi Inoue
Re: Problem with special characters in password when using SQLDriverConnect
From
"Jan-Peter Seifert"
Date:
Hello, > Gesendet: Mittwoch, 15. Mai 2013 um 17:31 Uhr > Von: "Hiroshi Inoue" <inoue@tpf.co.jp> > There already had been a patch in 09.00.0100 but this problem obviously persists in psqlODBC 09.01.0100 Unicode. Maybethis has been patched in the ANSI version only? > I don't understand why ANSI drivers work. That this has been fixed in the ANSI version only was just an assumption on my side, because the sudden increase of the 'knowncritical' characters seemed to be connected to the switch to the Unicode version of psqlODBC. It looks like the Unicode and the ANSI version use the 'same' internal functions though? > Could you please try the dll on testing for 9.1.0300 at > http://www.ne.jp/asahi/inocchichichi/entrance/psqlodbc/index.html Thank you very much for the patch! We tested several passwords in connection with the SQLDriverConnect function and the Unicode version of psqlODBC: password: %2 (two chars!) submitted as: …;UID=user;PWD=%2; fails …;UID=user;PWD={%2}; works password: %25 (three chars!) …;UID=user;PWD=%25; fails …;UID=user;PWD={%25}; works password: }{ …;UID=user;PWD={}{}; fails password: abc …;UID=user;PWD=abc; works (as expected) …;UID=user;PWD={abc}; works Password: a;bc …;UID=user;PWD=a;bc; fails (as expected) …;UID=user;PWD={a;bc}; works Best regards, Peter
Re: Problem with special characters in password when using SQLDriverConnect
From
Hiroshi Inoue
Date:
Hi, (2013/05/16 22:48), Jan-Peter Seifert wrote: > > Hello, > >> Gesendet: Mittwoch, 15. Mai 2013 um 17:31 Uhr >> Von: "Hiroshi Inoue" <inoue@tpf.co.jp> > >> There already had been a patch in 09.00.0100 but this problem obviously persists in psqlODBC 09.01.0100 Unicode. Maybethis has been patched in the ANSI version only? > >> I don't understand why ANSI drivers work. > > That this has been fixed in the ANSI version only was just an assumption on my side, because the sudden increase of the'known critical' characters seemed to be connected to the switch to the Unicode version of psqlODBC. > It looks like the Unicode and the ANSI version use the 'same' internal functions though? Yes it's essentially the same code. >> Could you please try the dll on testing for 9.1.0300 at >> http://www.ne.jp/asahi/inocchichichi/entrance/psqlodbc/index.html > > Thank you very much for the patch! > > We tested several passwords in connection with the SQLDriverConnect function and the Unicode version of psqlODBC: > > password: %2 (two chars!) > submitted as: > …;UID=user;PWD=%2; fails > …;UID=user;PWD={%2}; works > > password: %25 (three chars!) > …;UID=user;PWD=%25; fails > …;UID=user;PWD={%25}; works The psqlodbc driver expects Percent-Encoding for the password option as well as the *Connect Settings* option unless the value is enclosed with braces. > password: }{ > …;UID=user;PWD={}{}; fails The driver can't distinguish the first '}' from the terminating bracket. Please look at http://msdn.microsoft.com/en-us/library/ms130822.aspx . > password: abc > …;UID=user;PWD=abc; works (as expected) > …;UID=user;PWD={abc}; works > > Password: a;bc > …;UID=user;PWD=a;bc; fails (as expected) > …;UID=user;PWD={a;bc}; works > > Best regards, > > Peter
Re: Problem with special characters in password when using SQLDriverConnect
From
Jan-Peter Seifert
Date:
Hello, Am 16.05.2013 16:58, schrieb Hiroshi Inoue: > The driver can't distinguish the first '}' from the terminating bracket. > Please look at http://msdn.microsoft.com/en-us/library/ms130822.aspx . thank you very much for the link! We weren't sure whether always enclosing the password in curly braces would be okay. We'll do so in the future then. So I guess the hex encoding was the password patch in v09.00.0100. We switched from v08.04.0200 so I guess it really was just a coincidence that other new characters caused the same problem when switching to Unicode 'later on'. Thank you very much and sorry for the confusion! Best regards, Peter