Libpq free bug? (Was: [ODBC] IIS Postgres ASP ADO - Problem)

From: "Dave Page" <dpage(at)vale-housing(dot)co(dot)uk>
To: <pgsql-bugs(at)postgresql(dot)org>
Cc: <pgsql-odbc(at)postgresql(dot)org>
Subject: Libpq free bug? (Was: [ODBC] IIS Postgres ASP ADO - Problem)
Date: 2005-08-01 20:06:18
Message-ID: E7F85A1B5FF8D44C8A1AF6885BC9A0E4AC96B5@ratbert.vale-housing.co.uk
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs pgsql-odbc

Forwarded to -bugs in case it gets missed.

This looks like it might be an issue to me, though I may well have
overlooked something in my brief look at the code.

Regards, Dave

> -----Original Message-----
> From: pgsql-odbc-owner(at)postgresql(dot)org
> [mailto:pgsql-odbc-owner(at)postgresql(dot)org] On Behalf Of Marko Ristola
> Sent: 01 August 2005 18:15
> To: Joel Fradkin
> Cc: 'James Dornan'; pgsql-odbc(at)postgresql(dot)org
> Subject: Re: [ODBC] IIS Postgres ASP ADO - Problem
>
>
> I found a crashing problem during CONNECT into a database.
>
> Here is the problem description:
>
> Used Environment:
> libpq-API under PostgreSQL 8.0.3
> CVS HEAD of psqlodbc
>
> libpq does have a problem with freeing memory, that has not
> been alloced
> with malloc()!
>
> Here is the problem (I don't know, wether the PostgreSQL CVS
> HEAD has a
> fix for this):
>
> postgresql-8.0.3/src/interfaces/libpq/fe-connect.c, function
> conninfo_parse():
>
> /* Make a working copy of PQconninfoOptions */
> options = malloc(sizeof(PQconninfoOptions));
> ...
> memcpy(options, PQconninfoOptions,
> sizeof(PQconninfoOptions));
>
> Unfortunately PQconninfoOptions[] contains only char*val
> style pointers
> instead of
> char val[32] type character containers.
> Because of this, the assumption, that memcpy() is enough to copy the
> structure, is not
> true anymore. You should NOT copy a static structure this way!
>
> Working code would be something like this:
>
> options = malloc(sizeof(PQconninfoOptions));
> memcpy(options, PQconninfoOptions, sizeof(PQconninfoOptions));
> for (i=0; PQconninfoOptions[i].val != NULL; i++) {
> options[i].val = strdup(PQconninfoOptions[i].val);
> ... same for all other values
> }
> NULL termination.
>
>
>
> Because of this, isql fails with me at the beginning, maybe because
> dmalloc library, that I use for testing, discovered the problem.
>
> Marko Ristola
>
>
> Joel Fradkin wrote:
>
> >James,
> >
> >The odbc is not working well for me (I can connect but get
> intermittent
> >issues of the IIS server locking up in regards to connectivity).
> >My understanding is the snapshot version is the best odbc
> out at this time.
> >
> >Also can you connect via pgadmin (IE have the hba and config
> files set to
> >allow external connections)?
> >
> >My conection is not using dsn, but I did get dsn to work in testing.
> >My dsnless string is
> >
> >Session("StringConn") =
> >"DRIVER={PostgreSQL};DATABASE=wazagua;SERVER=192.168.123.121;
PORT=5432;UID=p
> >ostgres;PWD=;ReadOnly=0;Protocol=6.4;FakeOidIndex=0;ShowOidCo
lumn=0;RowVersi
> >oning=0;ShowSystemTables=0;ConnSettings=;Fetch=100;Socket=409
6;UnknownSizes=
> >0;MaxVarcharSize=254;MaxLongVarcharSize=8190;Debug=0;CommLog=
> 0;Optimizer=1;K
> >sqo=1;UseDeclareFetch=0;TextAsLongVarchar=1;UnknownsAsLongVar
char=0;BoolsAsC
> >har=1;Parse=0;CancelAsFreeStmt=0;ExtraSysTablePrefixes=dd_;LF
Conversion=1;Up
> >datableCursors=1;DisallowPremature=0;TrueIsMinus1=0;BI=0;Byte
aAsLongVarBinar
> >y=0;UseServerSidePrepare=0"
> >
> >My test using dsn used
> >Session("StringConn") ="DSN=postgresql;" & _
> > "UID=postgres;" & _
> > "PWD=;" & _
> > "Database=wazuni;"
> >
> >asp code to use connection is :
> > dim Arec, Acmd, SQL ,AConn
> > set Arec = server.CreateObject("ADODB.Recordset")
> > Set AConn = Server.CreateObject("ADODB.CONNECTION")
> > set Acmd = server.CreateObject("ADODB.Command")
> > AConn.ConnectionTimeOut=30
> > AConn.commandtimeout=30
> > AConn.Open Session("StringConn")
> >
> >For .net I use the npgsql .net objects.
> >
> >Hope this helps you.
> >
> >Joel Fradkin
> >
> >
> >
> >
> >-----Original Message-----
> >From: James Dornan [mailto:james(at)catch22(dot)com]
> >Sent: Sunday, July 31, 2005 4:44 PM
> >To: jfradkin(at)wazagua(dot)com
> >Subject: IIS Postgres ASP ADO - Problem
> >
> >
> > I noticed more than a few post from you about trying to
> get Postgres
> >working with ODBC.
> >I'm hoping that maybe you would share some of that information. I am
> >running IIS under
> >windos 2003 server, and the latest(8.0.3) Postgres server on
> the same
> >machine. I cannot
> >connect no matter what I do. I have tried everything.
> >
> > The funny part is that I'm not new to ODBC, or windows.
> I've worked
> >with windows all
> >the time, but just can't figure this one out. I've tried using a
> >connection string, a DSN,
> >reinstalling, IIS, Postgres, ODBC drivers, MDAC, Jet, and so
> on. I still
> >have the same problem.
> >The odbc drive and it's dependant DDLs are in the path. The
> permisions
> >are wide open
> >(for testing this specific problem).
> >
> > Is there any insight you could shed on the dark world of
> windows and
> >ODBC, where feed-
> >back is rare.
> >
> > Thanks for any help you can provide.
> >
> >-- James
> >
> >
> >---------------------------(end of
> broadcast)---------------------------
> >TIP 2: Don't 'kill -9' the postmaster
> >
> >
>
>
> ---------------------------(end of
> broadcast)---------------------------
> TIP 2: Don't 'kill -9' the postmaster
>

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Marko Ristola 2005-08-01 21:12:47 Re: Libpq free bug? (Was: [ODBC] IIS Postgres ASP ADO - Problem)
Previous Message Eric E 2005-08-01 19:36:15 Re: problem odbc 8.0 with EOModeler

Browse pgsql-odbc by date

  From Date Subject
Next Message Marko Ristola 2005-08-01 20:26:05 Re: Lowercase folding - simple patch?
Previous Message Eric E 2005-08-01 19:36:15 Re: problem odbc 8.0 with EOModeler