Re: [gnome-db] calling gda_client_find_connection twice with null username/passwords combos
- From: Alan Knowles <alan akbkhome com>
- To: Rodrigo Moya <rodrigo gnome-db org>
- Cc: GDA <gnome-db-list gnome org>
- Subject: Re: [gnome-db] calling gda_client_find_connection twice with null username/passwords combos
- Date: Thu, 19 Aug 2004 01:28:29 +0800
Are you sure you dont want to do
username ? username : dsn_info->username
password ? password : dsn_info->password
rather than
username ? username : ""
password ? password : ""
so that if you send it null, it compares the user/pass combo form the
dsn, rather than null against it?
I presume tmp_usr will have the username from the original dsn, rather
than null from the original connection?
Regards
Alan
Rodrigo Moya wrote:
On Wed, 2004-08-18 at 22:51 +0800, Alan Knowles wrote:
I have a config something like this:
gda_config_save_data_source ("test", "MySQL","DATABASE=test","test",
"me","");
One of the situations I have is, that I need to call
gda_client_open_connection twice - I could use find connection, but
open_connection calls it anyway..
The trouble occurs if I'm using null username/password combo's for
open_connection. It will segfault.
#0 0x403ff8b4 in strcmp () from /lib/libc.so.6
No symbol table info available.
#1 0x425993de in gda_client_find_connection () from /usr/lib/libgda-2.so.1
No symbol table info available.
#2 0x42598f24 in gda_client_open_connection () from /usr/lib/libgda-2.so.1
....
Anyway looking at the code for find connection it's pretty clear why
it's failing:
if (((!tmp_dsn && !dsn_info->name) || !strcmp (tmp_dsn, dsn_info->name)) &&
((!tmp_usr && !username) || !strcmp (tmp_usr, username)) &&
((!tmp_pwd && !password) || !strcmp (tmp_pwd, password))) {
gda_config_free_data_source_info (dsn_info);
return cnc;
}
comming in: username = null, password = null, all the others have values..
((!tmp_usr && !username) || !strcmp (tmp_usr, username))
will evaluate:
((!true && !false) || !strcmp("alan", null) <-- oops explode baby...
Basically find connection is not overlaying the username/password from
the source info:
adding something like this to start of find_connection should fix it?
dsn_info = gda_config_find_data_source (dsn);
username = username ? username : dsn_info->username;
password = password ? password : dsn_info->password;
I've made a better fix IMO to CVS. Please test it when possible.
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]