BUG #1114: REVOKE done by non-privileged user claims success

Started by PostgreSQL Bugs Listabout 22 years ago3 messagesbugs
Jump to latest
#1PostgreSQL Bugs List
pgsql-bugs@postgresql.org

The following bug has been logged online:

Bug reference: 1114
Logged by: Oliver Elphick

Email address: olly@lfix.co.uk

PostgreSQL version: 7.4

Operating system: Debian Linux

Description: REVOKE done by non-privileged user claims success

Details:

When REVOKE is used on an object for which the current user does not have
GRANT privilege, the operation fails but "REVOKE" is returned as if it had
succeeded:

$ psql -U fred template1
template1=> revoke create on schema public from public;
REVOKE

(NB: this web interface at http://www.postgresql.org/bugform.html could do
with Pg version options for 7.3.6, 7.4.1 and 7.4.2).

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: PostgreSQL Bugs List (#1)
Re: BUG #1114: REVOKE done by non-privileged user claims success

"PostgreSQL Bugs List" <pgsql-bugs@postgresql.org> writes:

When REVOKE is used on an object for which the current user does not have
GRANT privilege, the operation fails but "REVOKE" is returned as if it had
succeeded:

Looking at the code, this seems to be intentional, because the privilege
check is not made for revokes only for grants:

if (stmt->is_grant
&& !pg_class_ownercheck(relOid, GetUserId())
&& pg_class_aclcheck(relOid, GetUserId(),
ACL_GRANT_OPTION_FOR(privileges)) != ACLCHECK_OK)
aclcheck_error(ACLCHECK_NO_PRIV, ACL_KIND_CLASS, relvar->relname);

Peter, do you remember why you did it that way?

regards, tom lane

#3Peter Eisentraut
peter_e@gmx.net
In reply to: Tom Lane (#2)
Re: BUG #1114: REVOKE done by non-privileged user claims success

Tom Lane wrote:

Looking at the code, this seems to be intentional, because the
privilege check is not made for revokes only for grants:
Peter, do you remember why you did it that way?

I'm not really sure right now. It doesn't really make sense, does it?
Certainly, the SQL standard requires a privilege check on revoke.