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

From Dave Page
Subject Libpq free bug? (Was: [ODBC] IIS Postgres ASP ADO - Problem)
Date
Msg-id E7F85A1B5FF8D44C8A1AF6885BC9A0E4AC96B5@ratbert.vale-housing.co.uk
Whole thread Raw
Responses Re: Libpq free bug? (Was: [ODBC] IIS Postgres ASP ADO - Problem)  (Tom Lane <tgl@sss.pgh.pa.us>)
Re: Libpq free bug? (Was: [ODBC] IIS Postgres ASP ADO - Problem)  (Marko Ristola <Marko.Ristola@kolumbus.fi>)
List pgsql-bugs
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@postgresql.org
> [mailto:pgsql-odbc-owner@postgresql.org] On Behalf Of Marko Ristola
> Sent: 01 August 2005 18:15
> To: Joel Fradkin
> Cc: 'James Dornan'; pgsql-odbc@postgresql.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@catch22.com]
> >Sent: Sunday, July 31, 2005 4:44 PM
> >To: jfradkin@wazagua.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
>

pgsql-bugs by date:

Previous
From: "Kevin Grittner"
Date:
Subject: Re: problem odbc 8.0 with EOModeler
Next
From: Tom Lane
Date:
Subject: Re: Libpq free bug? (Was: [ODBC] IIS Postgres ASP ADO - Problem)