From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | Steve Wranovsky <stevew(at)merge(dot)com> |
Cc: | pgsql-interfaces(at)postgresql(dot)org |
Subject: | Re: 7.1 beta 4 ODBC Connection Problem |
Date: | 2001-02-08 00:38:51 |
Message-ID: | 9818.981592731@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-interfaces |
Steve Wranovsky <stevew(at)merge(dot)com> writes:
> I get a seg fault when I try and connect to the database via
> SQLConnect. Below is a stack trace from the core file. The crash
> occurs in sprintf.
This is probably the same problem that Nick Gorham pointed out this
morning...
regards, tom lane
------- Forwarded Message
Date: Wed, 07 Feb 2001 13:04:34 +0000
From: Nick Gorham <nick(at)easysoft(dot)com>
To: pgsql-hackers(at)postgresql(dot)org
Subject: [HACKERS] unixODBC (again)
Hi,
Having seen that the driver I distribute doesn't work against 7.1 Beta
4, and not wanting to continue the split between the two versions,
I have tried to get the driver in the beta working with unixODBC, but
I have come against a couple of problems, one a show stopper.
First let me say that I want to stop the split between the version, If
I can just point people to your distribution, thats fine by me, but it
needs to work :-). I am not trying to get you to standardise on
unixODBC, just to provide the option.
Initially I had to link my system odbc.ini to a user odbc, because the
driver looks in the home account. This would be SO much better if there
was a build option to link with libodbcini.so, not saying it should be
the default, just that the option would be great.
After this, it still didn't find the entries, I fould the problem was
the code couldn't handle spaces in the ini file, so
[dsn]
Servername=fred
works, but
[dsn]
Servername = fred
doesn't. Not a major point, but again the ini lib would fix this.
Then having sorted this out, I get a core dump, that I have traced to
CC_lookup_pg_version, the code did
CC_lookup_pg_version(ConnectionClass *self)
{
HSTMT hstmt;
StatementClass *stmt;
RETCODE result;
char *szVersion = "0.0";
static char *func = "CC_lookup_pg_version";
Then later did a
sprintf( szVersion... );
This seems to be trying to write into, what the compiler is marking as
read only storage. A quick change to
CC_lookup_pg_version(ConnectionClass *self)
{
HSTMT hstmt;
StatementClass *stmt;
RETCODE result;
char szVersion[ 3 ]; ---- should be 4 --- tgl
static char *func = "CC_lookup_pg_version";
strcpy( szVersion, "0.0" );
Fixes the problem, and it connects. I will continue testing, with some
apps and see how it gets on
--
Nick Gorham
Easysoft Ltd
------- End of Forwarded Message
From | Date | Subject | |
---|---|---|---|
Next Message | Jan Wieck | 2001-02-08 12:10:08 | Re: pl/perl and security |
Previous Message | Steve Wranovsky | 2001-02-07 23:03:40 | 7.1 beta 4 ODBC Connection Problem |