From: | Andrew Chernow <ac(at)esilo(dot)com> |
---|---|
To: | Pavel Golub <pavel(at)microolap(dot)com> |
Cc: | PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: Error in PQsetvalue |
Date: | 2011-06-03 20:06:47 |
Message-ID: | 4DE93ED7.4000407@esilo.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On 6/3/2011 3:03 PM, Pavel Golub wrote:
> Hello.
>
> Reproduced under Windows XP SP3 using Visual C++ 2008 and Delphi. If
> PQsetvalue is called with second parameter equals to PQntuples then
> memory corruption appears. But it should grow internal tuples array
> and populate the last item with provided data. Please see the code:
>
>
At first glance (have not tested this theory), looks like pqAddTuple()
doesn't zero the newly allocated tuples slots like PQsetvalue() does.
PQsetvalue is depending on the unassigned tuple table slots to be NULL
to detect when a tuple must be allocated. Around line 446 on fe-exec.c.
I never tested this case since libpqtypes never tried to call
PQsetvalue on a PGresult created by the standard libpq library.
The solution I see would be to zero the new table slots within
pqAddTuple. Any other ideas?
--
Andrew Chernow
eSilo, LLC
global backup
http://www.esilo.com/
From | Date | Subject | |
---|---|---|---|
Next Message | Merlin Moncure | 2011-06-03 20:08:55 | Re: Error in PQsetvalue |
Previous Message | Kevin Grittner | 2011-06-03 19:57:51 | Re: Domains versus polymorphic functions, redux |