From: Tom Lane Date: Fri, 5 Jan 2001 02:58:16 +0000 (+0000) Subject: Disallow creation of a child table by a user who does not own the parent X-Git-Tag: REL7_1_BETA2~21 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e62c38d0fccd16593ab2b126e97ea890ac646943;p=postgresql Disallow creation of a child table by a user who does not own the parent table, per pghackers discussion around 22-Dec-00. --- diff --git a/src/backend/commands/creatinh.c b/src/backend/commands/creatinh.c index 38e2c3a418..22a34d2e5a 100644 --- a/src/backend/commands/creatinh.c +++ b/src/backend/commands/creatinh.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/commands/Attic/creatinh.c,v 1.69 2000/12/22 23:12:05 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/commands/Attic/creatinh.c,v 1.70 2001/01/05 02:58:16 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -25,6 +25,7 @@ #include "commands/creatinh.h" #include "miscadmin.h" #include "optimizer/clauses.h" +#include "utils/acl.h" #include "utils/syscache.h" #include "utils/temprel.h" @@ -384,6 +385,12 @@ MergeAttributes(List *schema, List *supers, bool istemp, if (!istemp && is_temp_rel_name(name)) elog(ERROR, "CREATE TABLE: cannot inherit from temp relation \"%s\"", name); + /* We should have an UNDER permission flag for this, but for now, + * demand that creator of a child table own the parent. + */ + if (!pg_ownercheck(GetUserId(), name, RELNAME)) + elog(ERROR, "you do not own table \"%s\"", name); + parentOids = lappendi(parentOids, relation->rd_id); setRelhassubclassInRelation(relation->rd_id, true); tupleDesc = RelationGetDescr(relation);