]> granicus.if.org Git - postgresql/commitdiff
Fix pg_recvlogical for pre-10 versions
authorMagnus Hagander <magnus@hagander.net>
Sun, 18 Mar 2018 12:08:25 +0000 (13:08 +0100)
committerMagnus Hagander <magnus@hagander.net>
Sun, 18 Mar 2018 12:11:27 +0000 (13:11 +0100)
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>

src/bin/pg_basebackup/streamutil.c

index 63a5b4cb51c5ad47106192e0bc33b1b77171d99f..42e0cb10821b8b6ba1c9f3dfc3b72d2e7270f050 100644 (file)
@@ -206,8 +206,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;