Re: BUG #16466: Valgrind detects an invalid read in dblink_open()with a cursor inside a transaction - Mailing list pgsql-bugs

From Joe Conway
Subject Re: BUG #16466: Valgrind detects an invalid read in dblink_open()with a cursor inside a transaction
Date
Msg-id 9bd0744f-5f04-c778-c5b3-809efe9c30c7@joeconway.com
Whole thread Raw
In response to BUG #16466: Valgrind detects an invalid read in dblink_open() with a cursor inside a transaction  (PG Bug reporting form <noreply@postgresql.org>)
Responses Re: BUG #16466: Valgrind detects an invalid read in dblink_open()with a cursor inside a transaction  (Alexander Lakhin <exclusion@gmail.com>)
List pgsql-bugs
On 5/27/20 2:00 PM, PG Bug reporting form wrote:
> The following bug has been logged on the website:
>
> Bug reference:      16466
> Logged by:          Alexander Lakhin
> Email address:      exclusion@gmail.com
> PostgreSQL version: 13beta1
> Operating system:   Ubuntu 18.04
> Description:
>
> When running under valgrind the following query (based on
> contrib/dblink/sql/dblink.sql):
> CREATE EXTENSION dblink;
> CREATE FUNCTION connection_parameters() RETURNS text LANGUAGE SQL AS $f$
>        SELECT $$dbname='$$||current_database()||$$'
> port=$$||current_setting('port');
> $f$;
> SELECT dblink_connect('myconn',connection_parameters());
> SELECT dblink_exec('myconn','BEGIN');
> SELECT dblink_open('myconn','xxx','SELECT 1');
>
> The following error is detected:
> ==00:00:00:07.723 2378719== Conditional jump or move depends on
> uninitialised value(s)
> ==00:00:00:07.723 2378719==    at 0x486A5D0: dblink_open (dblink.c:492)


Hmmm, looks like a couple of the members of rconn are left uninitialized.

When dblink_open() is called *without* an outer transaction it handles the
initialization for us, but *with* an outer transaction it does not :-(

I think the attached fixes it.

Joe

--
Crunchy Data - http://crunchydata.com
PostgreSQL Support for Secure Enterprises
Consulting, Training, & Open Source Development

Attachment

pgsql-bugs by date:

Previous
From: PG Bug reporting form
Date:
Subject: BUG #16466: Valgrind detects an invalid read in dblink_open() with a cursor inside a transaction
Next
From: Alexander Lakhin
Date:
Subject: Re: BUG #16466: Valgrind detects an invalid read in dblink_open()with a cursor inside a transaction