pg-catalog-perms.patch
text/x-diff
Filename: pg-catalog-perms.patch
Type: text/x-diff
Part: 0
Patch
Format: unified
| File | + | − |
|---|---|---|
| src/backend/catalog/aclchk.c | 5 | 0 |
diff --git a/src/backend/catalog/aclchk.c b/src/backend/catalog/aclchk.c
index 0bf5356..3738cf5 100644
--- a/src/backend/catalog/aclchk.c
+++ b/src/backend/catalog/aclchk.c
@@ -4445,6 +4445,11 @@ pg_largeobject_aclcheck_snapshot(Oid lobj_oid, Oid roleid, AclMode mode,
AclResult
pg_namespace_aclcheck(Oid nsp_oid, Oid roleid, AclMode mode)
{
+ if (mode == ACL_CREATE && !allowSystemTableMods &&
+ (IsSystemNamespace(nsp_oid) || IsToastNamespace(nsp_oid)) &&
+ IsNormalProcessingMode())
+ return ACLCHECK_NO_PRIV;
+
if (pg_namespace_aclmask(nsp_oid, roleid, mode, ACLMASK_ANY) != 0)
return ACLCHECK_OK;
else