aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMagnus Hagander <magnus@hagander.net>2018-03-18 13:08:25 +0100
committerMagnus Hagander <magnus@hagander.net>2018-03-18 13:08:25 +0100
commit8d2814f274def85f39fbe997d454b01628cb5667 (patch)
tree37b0b36428cb55b498383df7ddc3e54d58ab144a
parent2dbee9f19f6c6ac6c013f668611492486e623807 (diff)
downloadpostgresql-8d2814f274def85f39fbe997d454b01628cb5667.tar.gz
postgresql-8d2814f274def85f39fbe997d454b01628cb5667.zip
Fix pg_recvlogical for pre-10 versions
In e170b8c8, protection against modified search_path was added. However, PostgreSQL versions prior to 10 does not accept SQL commands over a replication connection, so the protection would generate a syntax error. Since we cannot run SQL commands on it, we are also not vulnerable to the issue that e170b8c8 fixes, so we can just skip this command for older versions. Author: Michael Paquier <michael@paquier.xyz>
-rw-r--r--src/bin/pg_basebackup/streamutil.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/bin/pg_basebackup/streamutil.c b/src/bin/pg_basebackup/streamutil.c
index 296b1888aad..1438f368edc 100644
--- a/src/bin/pg_basebackup/streamutil.c
+++ b/src/bin/pg_basebackup/streamutil.c
@@ -209,8 +209,13 @@ GetConnection(void)
if (conn_opts)
PQconninfoFree(conn_opts);
- /* Set always-secure search path, so malicious users can't get control. */
- if (dbname != NULL)
+ /*
+ * Set always-secure search path, so malicious users can't get control.
+ * The capacity to run normal SQL queries was added in PostgreSQL
+ * 10, so the search path cannot be changed (by us or attackers) on
+ * earlier versions.
+ */
+ if (dbname != NULL && PQserverVersion(conn) >= 100000)
{
PGresult *res;