]> granicus.if.org Git - postgresql/commitdiff
Fix segfault in ALTER PUBLICATION/SUBSCRIPTION RENAME
authorPeter Eisentraut <peter_e@gmx.net>
Wed, 8 Mar 2017 03:44:59 +0000 (22:44 -0500)
committerPeter Eisentraut <peter_e@gmx.net>
Wed, 8 Mar 2017 03:44:59 +0000 (22:44 -0500)
From: Masahiko Sawada <sawada.mshk@gmail.com>
Reported-by: Fujii Masao <masao.fujii@gmail.com>
src/backend/catalog/objectaddress.c
src/test/regress/expected/publication.out
src/test/regress/expected/subscription.out
src/test/regress/sql/publication.sql
src/test/regress/sql/subscription.sql

index f2b96015bfc9efa9e4ed9f2e04f14c4d4f5cc8d9..3a7f0492472af1326af16982298933cdda7aa8bc 100644 (file)
@@ -464,7 +464,7 @@ static const ObjectPropertyType ObjectProperty[] =
                InvalidAttrNumber,
                Anum_pg_publication_pubowner,
                InvalidAttrNumber,
-               -1,
+               ACL_KIND_PUBLICATION,
                true
        },
        {
@@ -476,7 +476,7 @@ static const ObjectPropertyType ObjectProperty[] =
                InvalidAttrNumber,
                Anum_pg_subscription_subowner,
                InvalidAttrNumber,
-               -1,
+               ACL_KIND_SUBSCRIPTION,
                true
        }
 };
index 6416fbb9142eb311ccd5d68c7da5b8ce165f53cc..34320267c3f81c46108110b2c96aafb368112d04 100644 (file)
@@ -2,6 +2,7 @@
 -- PUBLICATION
 --
 CREATE ROLE regress_publication_user LOGIN SUPERUSER;
+CREATE ROLE regress_publication_user_dummy LOGIN NOSUPERUSER;
 SET SESSION AUTHORIZATION 'regress_publication_user';
 CREATE PUBLICATION testpub_default;
 CREATE PUBLICATION testpib_ins_trunct WITH (nopublish delete, nopublish update);
@@ -148,6 +149,11 @@ DROP TABLE testpub_tbl1;
  t       | t       | t
 (1 row)
 
+-- faile - must be owner of publication
+SET ROLE regress_publication_user_dummy;
+ALTER PUBLICATION testpub_default RENAME TO testpub_dummy;
+ERROR:  must be owner of publication testpub_default
+RESET ROLE;
 ALTER PUBLICATION testpub_default RENAME TO testpub_foo;
 \dRp testpub_foo
                          List of publications
@@ -163,3 +169,4 @@ DROP SCHEMA pub_test CASCADE;
 NOTICE:  drop cascades to table pub_test.testpub_nopk
 RESET SESSION AUTHORIZATION;
 DROP ROLE regress_publication_user;
+DROP ROLE regress_publication_user_dummy;
index a8a61ee8afa7e0f788998919de0e36a750f498bd..26f0a36ff0907ebb8e786debd4ff5b216ad37584 100644 (file)
@@ -2,6 +2,7 @@
 -- SUBSCRIPTION
 --
 CREATE ROLE regress_subscription_user LOGIN SUPERUSER;
+CREATE ROLE regress_subscription_user_dummy LOGIN NOSUPERUSER;
 SET SESSION AUTHORIZATION 'regress_subscription_user';
 -- fail - no publications
 CREATE SUBSCRIPTION testsub CONNECTION 'foo';
@@ -66,6 +67,11 @@ ALTER SUBSCRIPTION testsub DISABLE;
 (1 row)
 
 COMMIT;
+-- fail - must be owner of subscription
+SET ROLE regress_subscription_user_dummy;
+ALTER SUBSCRIPTION testsub RENAME TO testsub_dummy;
+ERROR:  must be owner of subscription testsub
+RESET ROLE;
 ALTER SUBSCRIPTION testsub RENAME TO testsub_foo;
 \dRs
                          List of subscriptions
@@ -84,3 +90,4 @@ DROP SUBSCRIPTION testsub_foo NODROP SLOT;
 COMMIT;
 RESET SESSION AUTHORIZATION;
 DROP ROLE regress_subscription_user;
+DROP ROLE regress_subscription_user_dummy;
index 9563ea1857294f182b0c1acf36696245ece94723..de68e61cb3b09074ac592eceb0527caadb094b17 100644 (file)
@@ -2,6 +2,7 @@
 -- PUBLICATION
 --
 CREATE ROLE regress_publication_user LOGIN SUPERUSER;
+CREATE ROLE regress_publication_user_dummy LOGIN NOSUPERUSER;
 SET SESSION AUTHORIZATION 'regress_publication_user';
 
 CREATE PUBLICATION testpub_default;
@@ -73,6 +74,11 @@ DROP TABLE testpub_tbl1;
 
 \dRp+ testpub_default
 
+-- faile - must be owner of publication
+SET ROLE regress_publication_user_dummy;
+ALTER PUBLICATION testpub_default RENAME TO testpub_dummy;
+RESET ROLE;
+
 ALTER PUBLICATION testpub_default RENAME TO testpub_foo;
 
 \dRp testpub_foo
@@ -85,3 +91,4 @@ DROP SCHEMA pub_test CASCADE;
 
 RESET SESSION AUTHORIZATION;
 DROP ROLE regress_publication_user;
+DROP ROLE regress_publication_user_dummy;
index 0b6c8a3f5c92c1707e1dade764addbc0160ec416..d97b4f7346f3c3cafaabf6405b0108dcc3396883 100644 (file)
@@ -3,6 +3,7 @@
 --
 
 CREATE ROLE regress_subscription_user LOGIN SUPERUSER;
+CREATE ROLE regress_subscription_user_dummy LOGIN NOSUPERUSER;
 SET SESSION AUTHORIZATION 'regress_subscription_user';
 
 -- fail - no publications
@@ -43,6 +44,11 @@ ALTER SUBSCRIPTION testsub DISABLE;
 
 COMMIT;
 
+-- fail - must be owner of subscription
+SET ROLE regress_subscription_user_dummy;
+ALTER SUBSCRIPTION testsub RENAME TO testsub_dummy;
+RESET ROLE;
+
 ALTER SUBSCRIPTION testsub RENAME TO testsub_foo;
 
 \dRs
@@ -58,3 +64,4 @@ COMMIT;
 
 RESET SESSION AUTHORIZATION;
 DROP ROLE regress_subscription_user;
+DROP ROLE regress_subscription_user_dummy;