From 4ecaf2b381ac446d184373f74d831917f99ae8ae Mon Sep 17 00:00:00 2001 From: Onder Kalaci Date: Mon, 15 Aug 2022 13:43:40 +0200 Subject: [PATCH] WIP --- src/backend/distributed/utils/resource_lock.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/backend/distributed/utils/resource_lock.c b/src/backend/distributed/utils/resource_lock.c index aa406a817..6bbbf2aa2 100644 --- a/src/backend/distributed/utils/resource_lock.c +++ b/src/backend/distributed/utils/resource_lock.c @@ -98,6 +98,7 @@ static void LockShardListResourcesOnFirstWorker(LOCKMODE lockmode, static bool IsFirstWorkerNode(); static void CitusRangeVarCallbackForLockTable(const RangeVar *rangeVar, Oid relationId, Oid oldRelationId, void *arg); +static void EnsureCanAcquireLock(Oid relationId, LOCKMODE lockMode); static AclResult CitusLockTableAclCheck(Oid relationId, LOCKMODE lockmode, Oid userId); static void SetLocktagForShardDistributionMetadata(int64 shardId, LOCKTAG *tag); @@ -624,6 +625,10 @@ LockShardResource(uint64 shardId, LOCKMODE lockmode) const bool sessionLock = false; const bool dontWait = false; + /* + * We cannot allow underprivileged users to acquire locks on + * the owner tables of the shards. + */ EnsureCanAcquireLock(RelationIdForShard(shardId), lockmode); SET_LOCKTAG_SHARD_RESOURCE(tag, MyDatabaseId, shardId);