Install a data-type-based solution for protecting pg_get_expr().

Tom Lane <tgl@sss.pgh.pa.us>

Commit: 303696c3b47e6719e983e93da5896ddc4a2e0dbb
Author: Tom Lane <tgl@sss.pgh.pa.us>
Date: 2010-09-03T01:34:55Z
Releases: 9.1.0
Install a data-type-based solution for protecting pg_get_expr().

Since the code underlying pg_get_expr() is not secure against malformed
input, and can't practically be made so, we need to prevent miscreants
from feeding arbitrary data to it.  We can do this securely by declaring
pg_get_expr() to take a new datatype "pg_node_tree" and declaring the
system catalog columns that hold nodeToString output to be of that type.
There is no way at SQL level to create a non-null value of type pg_node_tree.
Since the backend-internal operations that fill those catalog columns
operate below the SQL level, they are oblivious to the datatype relabeling
and don't need any changes.

Files