mirror of
https://github.com/postgres/postgres.git
synced 2025-07-07 00:36:50 +03:00
Fix GRANTED BY support in REVOKE ROLE statements
Commit 6aaaa76bb
added support for the GRANTED BY clause in GRANT and
REVOKE statements, but missed adding support for checking the role in
the REVOKE ROLE case. Fix by checking that the parsed role matches the
CURRENT_ROLE/CURRENT_USER requirement, and also add some tests for it.
Backpatch to v14 where GRANTED BY support was introduced.
Discussion: https://postgr.es/m/B7F6699A-A984-4943-B9BF-CEB84C003527@yesql.se
Backpatch-through: 14
This commit is contained in:
@ -1259,7 +1259,18 @@ GrantRole(GrantRoleStmt *stmt)
|
||||
ListCell *item;
|
||||
|
||||
if (stmt->grantor)
|
||||
{
|
||||
grantor = get_rolespec_oid(stmt->grantor, false);
|
||||
|
||||
/*
|
||||
* Currently, this clause is only for SQL compatibility, not very
|
||||
* interesting otherwise.
|
||||
*/
|
||||
if (grantor != GetUserId())
|
||||
ereport(ERROR,
|
||||
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
|
||||
errmsg("grantor must be current user")));
|
||||
}
|
||||
else
|
||||
grantor = GetUserId();
|
||||
|
||||
|
Reference in New Issue
Block a user