Thread: Username and password from DSN being overwritten (fix included)
Hi all,
I ran into a problem recently trying to use the latest CVS version of the ODBC driver with Business Objects XI Release 2. The username and password specified for a connection in the ODBC setup panel were being ignored by the driver. I discovered that after some recent changes to the make_string() function in misc.c, the DSN defaults were always being overwritten by whatever username and password were passed to PGAPI_Connect(), even if they were empty strings.
Below is a (very small) patch to connection.c to work around the issue.
Thanks,
Rick Hair
*** psqlodbc.old/connection.c 2006-10-13 08:13:31.000000000 -0500
--- psqlodbc.new/connection.c 2006-10-16 17:09:31.000000000 -0500
***************
*** 127,134 ****
* override values from DSN info with UID and authStr(pwd) This only
* occurs if the values are actually there.
*/
! make_string(szUID, cbUID, ci->username, sizeof(ci->username));
! make_string(szAuthStr, cbAuthStr, ci->password, sizeof(ci->password));
/* fill in any defaults */
getDSNdefaults(ci);
--- 127,136 ----
* override values from DSN info with UID and authStr(pwd) This only
* occurs if the values are actually there.
*/
! if (cbUID > 0)
! make_string(szUID, cbUID, ci->username, sizeof(ci->username));
! if (cbAuthStr > 0)
! make_string(szAuthStr, cbAuthStr, ci->password, sizeof(ci->password));
/* fill in any defaults */
getDSNdefaults(ci);
Rick Hair wrote: > Hi all, > > I ran into a problem recently trying to use the latest CVS version of the > ODBC driver with Business Objects XI Release 2. The username and password > specified for a connection in the ODBC setup panel were being ignored by the > driver. I discovered that after some recent changes to the make_string() > function in misc.c, the DSN defaults were always being overwritten by > whatever username and password were passed to PGAPI_Connect(), even if they > were empty strings. > > Below is a (very small) patch to connection.c to work around the issue. > > ! if (cbUID > 0) > > ! make_string(szUID, cbUID, ci->username, sizeof(ci->username)); > > ! if (cbAuthStr > 0) > > ! make_string(szAuthStr, cbAuthStr, ci->password, > sizeof(ci->password)); > The above patch seems to be wrong because cbUID(cvAuthStr) can be SQL_NTS. OK I would take care of this case. Please try the snapshot dll at http://www.geocities.jp/inocchichichi/psqlodbc/index.html . regards, Hiroshi Inoue
That did the trick; Business Objects seems to be working fine with the new snapshot. Thanks, Rick Hair Hiroshi Inoue wrote: > > The above patch seems to be wrong because cbUID(cvAuthStr) can be SQL_NTS. > OK I would take care of this case. > Please try the snapshot dll at > http://www.geocities.jp/inocchichichi/psqlodbc/index.html > . > > regards, > Hiroshi Inoue > > > ---------------------------(end of broadcast)--------------------------- > TIP 9: In versions below 8.0, the planner will ignore your desire to > choose an index scan if your joining column's datatypes do not > match