Re: BUG #15116: pg_recvlogical always fails - Mailing list pgsql-bugs

From Magnus Hagander
Subject Re: BUG #15116: pg_recvlogical always fails
Date
Msg-id CABUevEzSMUzRG7PXXfHbGLW9-YTwTrDSiyd27hRSXXuHmF4CYg@mail.gmail.com
Whole thread Raw
In response to Re: BUG #15116: pg_recvlogical always fails  (Michael Paquier <michael@paquier.xyz>)
Responses Re: BUG #15116: pg_recvlogical always fails  (Michael Paquier <michael@paquier.xyz>)
List pgsql-bugs


On Sat, Mar 17, 2018 at 1:32 AM, Michael Paquier <michael@paquier.xyz> wrote:
On Sat, Mar 17, 2018 at 09:20:26AM +0900, Michael Paquier wrote:
> At least slot creation fails.  One just needs to start up an instance
> and run that for example:
> $ pg_recvlogical --create-slot -S popo -d "dbname=postgres"
> pg_recvlogical: could not clear search_path: ERROR:  syntax erro

The issue is that support for plain SQL queries has been added in
PostgreSQL 10 for logical replication connections, however e170b8c8 has
missed the fact that this is not supported for older versions.  Hence,
two things need to happen as pg_recvlogical needs to be kept compatible
with past server versions:
1) Make the check deciding if search_path should be enforced smarter by
checking if the server version is newer than 10.  This needs to be
patched on HEAD and REL_10_STABLE.  recvlogical-search-path-fix.patch
does so.

This looks like the correct fix.

 
2) Simply remove the check on past branches, as I recall that we
maintain downstream compatibility, but do not for example guarantee that
a Postgres 10 server would work with a 9.6's pg_recvlogical. This is
what recvlogical-search-path-fix-96.patch attached does.

In this scenario, since we don't actively *enforce* this version difference, I think we should apply the fix from #1 in this scenario as well. Otherwise you might use an old pg_recvlogical to connect to a newer server, and open up a vulnerability somehow. I assume pg_recvlogical of that age doesn't actually try to do something with it, but it still feels safer for the future.

Is there any particular reason why doing #1 would not work on the older branches?

--

pgsql-bugs by date:

Previous
From: Tom Lane
Date:
Subject: Re: BUG #15120: use of getcwd(3)/chdir(2) during path resolution (exec.c)
Next
From: Andrew Gierth
Date:
Subject: Re: BUG #15120: use of getcwd(3)/chdir(2) during path resolution (exec.c)