postgres.git / summary / log / commit / refs

commit    fe974cc5a69903e9f53b36d6e2709fd3de0a1ac7
Author:   Peter Eisentraut <peter_e@gmx.net>
Date:     Mon May 08 18:01:00 2017 +0000

    Check connection info string in ALTER SUBSCRIPTION
    
    Previously it would allow an invalid connection string to be set.
    
    Author: Petr Jelinek <petr.jelinek@2ndquadrant.com>
    Reported-by: tushar <tushar.ahuja@enterprisedb.com>


src/backend/commands/subscriptioncmds.c | 5 +++++ src/test/regress/expected/subscription.out | 4 ++++ src/test/regress/sql/subscription.sql | 3 +++ 3 files changed, 12 insertions(+) diff --git a/src/backend/commands/subscriptioncmds.c b/src/backend/commands/subscriptioncmds.c index ee0983fd87e..fde9e6e20cd 100644 --- a/src/backend/commands/subscriptioncmds.c +++ b/src/backend/commands/subscriptioncmds.c @@ -653,6 +653,11 @@ AlterSubscription(AlterSubscriptionStmt *stmt) } case ALTER_SUBSCRIPTION_CONNECTION: + /* Load the library providing us libpq calls. */ + load_file("libpqwalreceiver", false); + /* Check the connection info string. */ + walrcv_check_conninfo(stmt->conninfo); + values[Anum_pg_subscription_subconninfo - 1] = CStringGetTextDatum(stmt->conninfo); replaces[Anum_pg_subscription_subconninfo - 1] = true; diff --git a/src/test/regress/expected/subscription.out b/src/test/regress/expected/subscription.out index b1686db12ec..fd09f545484 100644 --- a/src/test/regress/expected/subscription.out +++ b/src/test/regress/expected/subscription.out @@ -45,6 +45,10 @@ SET SESSION AUTHORIZATION 'regress_subscription_user2'; CREATE SUBSCRIPTION testsub2 CONNECTION 'dbname=doesnotexist' PUBLICATION foo WITH (NOCONNECT); ERROR: must be superuser to create subscriptions SET SESSION AUTHORIZATION 'regress_subscription_user'; +-- fail - invalid connection string +ALTER SUBSCRIPTION testsub CONNECTION 'foobar'; +ERROR: invalid connection string syntax: missing "=" after "foobar" in connection info string + \dRs+ List of subscriptions Name | Owner | Enabled | Publication | Synchronous commit | Conninfo diff --git a/src/test/regress/sql/subscription.sql b/src/test/regress/sql/subscription.sql index 1b30d150cea..db05f523a2b 100644 --- a/src/test/regress/sql/subscription.sql +++ b/src/test/regress/sql/subscription.sql @@ -38,6 +38,9 @@ SET SESSION AUTHORIZATION 'regress_subscription_user2'; CREATE SUBSCRIPTION testsub2 CONNECTION 'dbname=doesnotexist' PUBLICATION foo WITH (NOCONNECT); SET SESSION AUTHORIZATION 'regress_subscription_user'; +-- fail - invalid connection string +ALTER SUBSCRIPTION testsub CONNECTION 'foobar'; + \dRs+ ALTER SUBSCRIPTION testsub SET PUBLICATION testpub2, testpub3 NOREFRESH; [parent: c89d2d0204f2]