OSDN Git Service

Enforce superuser permissions checks during ALTER ROLE/DATABASE SET, rather
authorTom Lane <tgl@sss.pgh.pa.us>
Wed, 21 Apr 2010 20:54:19 +0000 (20:54 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Wed, 21 Apr 2010 20:54:19 +0000 (20:54 +0000)
commita6dcd19a2a5064d753c1d5aa756a2d50cf05842d
treea9c85c845c4ffd7033c3d48f5fcae12c89a4f070
parentf6e092701c6ac7bb98ed88a769daa13d3a1755d9
Enforce superuser permissions checks during ALTER ROLE/DATABASE SET, rather
than during define_custom_variable().  This entails rejecting an ALTER
command if the target variable doesn't have a known (non-placeholder)
definition, unless the calling user is superuser.  When the variable *is*
known, we can correctly apply the rule that only superusers can issue ALTER
for SUSET parameters.  This allows define_custom_variable to apply ALTER's
values for SUSET parameters at module load time, secure in the knowledge
that only a superuser could have set the ALTER value.  This change fixes a
longstanding gotcha in the usage of SUSET-level custom parameters; which
is a good thing to fix now that plpgsql defines such a parameter.
doc/src/sgml/ref/alter_role.sgml
src/backend/utils/misc/guc.c