Thread: (libpq) PQclear on questionable result pointer.

(libpq) PQclear on questionable result pointer.

From
wade
Date:
Greets all,
While attempting to clean up some memory leaks, I have encountered some 
difficulties.  In the code for PQclear() we have the check:
 if (!res)return;

The problem arrises when the result object pointer you are passing to clear 
contains not a null and not a valid result object address, but a junk pointer.
PQclear() seg faults when the address is outside of the data segment.
(libpq bug?)
My question is, how does one determine when a PGresult* contains the address 
of a valid result object?  Rewriting the calling code is not an option sadly.
What I would like to be able to do is something like this:
if ( result_is_valid( res ) ){    PQclear( res );}

Thanks in advance for any help/suggestions. -Wade


Re: (libpq) PQclear on questionable result pointer.

From
Tom Lane
Date:
wade <wade@wavefire.com> writes:
> The problem arrises when the result object pointer you are passing to clear 
> contains not a null and not a valid result object address, but a junk pointer.
> PQclear() seg faults when the address is outside of the data segment.
> (libpq bug?)

No, that's a bug in *your* code.  Passing a bogus pointer to any library
anywhere will make it segfault, because there's no reasonable way to
verify a pointer.
        regards, tom lane