aboutsummaryrefslogtreecommitdiff
path: root/doc/src
diff options
context:
space:
mode:
authorNoah Misch <noah@leadboat.com>2014-02-17 09:33:31 -0500
committerNoah Misch <noah@leadboat.com>2014-02-17 09:33:36 -0500
commit23b5a85e60c464ab8bc438a547a4b15260ca9453 (patch)
treea7052c7e2039ec185e9b44fdf9b1596c48396a3c /doc/src
parent5d320a16ca544d6e125e962ed325463ad8bec240 (diff)
downloadpostgresql-23b5a85e60c464ab8bc438a547a4b15260ca9453.tar.gz
postgresql-23b5a85e60c464ab8bc438a547a4b15260ca9453.zip
Prevent privilege escalation in explicit calls to PL validators.
The primary role of PL validators is to be called implicitly during CREATE FUNCTION, but they are also normal functions that a user can call explicitly. Add a permissions check to each validator to ensure that a user cannot use explicit validator calls to achieve things he could not otherwise achieve. Back-patch to 8.4 (all supported versions). Non-core procedural language extensions ought to make the same two-line change to their own validators. Andres Freund, reviewed by Tom Lane and Noah Misch. Security: CVE-2014-0061
Diffstat (limited to 'doc/src')
-rw-r--r--doc/src/sgml/plhandler.sgml5
1 files changed, 4 insertions, 1 deletions
diff --git a/doc/src/sgml/plhandler.sgml b/doc/src/sgml/plhandler.sgml
index c9b804c0752..59302517769 100644
--- a/doc/src/sgml/plhandler.sgml
+++ b/doc/src/sgml/plhandler.sgml
@@ -179,7 +179,10 @@ CREATE LANGUAGE plsample
or updated a function written in the procedural language.
The passed-in OID is the OID of the function's <classname>pg_proc</>
row. The validator must fetch this row in the usual way, and do
- whatever checking is appropriate. Typical checks include verifying
+ whatever checking is appropriate.
+ First, call <function>CheckFunctionValidatorAccess()</> to diagnose
+ explicit calls to the validator that the user could not achieve through
+ <command>CREATE FUNCTION</>. Typical checks then include verifying
that the function's argument and result types are supported by the
language, and that the function's body is syntactically correct
in the language. If the validator finds the function to be okay,