Commit 40d0bd8
committed
Be more paranoid in ruleutils.c's get_variable().
We were merely Assert'ing that the Var matched the RTE it's supposedly
from. But if the user passes incorrect information to pg_get_expr(),
the RTE might in fact not match; this led either to Assert failures
or core dumps, as reported by Chris Hanks in bug #14220. To fix, just
convert the Asserts to test-and-elog. Adjust an existing test-and-elog
elsewhere in the same function to be consistent in wording.
(If we really felt these were user-facing errors, we might promote them to
ereport's; but I can't convince myself that they're worth translating.)
Back-patch to 9.3; the problematic code doesn't exist before that, and
a quick check says that 9.2 doesn't crash on such cases.
Michael Paquier and Thomas Munro
Report: <20160629224349.1407.32667@wrigleys.postgresql.org>1 parent 8f4a369 commit 40d0bd8
1 file changed
+8
-3
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
6012 | 6012 | | |
6013 | 6013 | | |
6014 | 6014 | | |
6015 | | - | |
| 6015 | + | |
| 6016 | + | |
6016 | 6017 | | |
6017 | 6018 | | |
6018 | 6019 | | |
| |||
6073 | 6074 | | |
6074 | 6075 | | |
6075 | 6076 | | |
6076 | | - | |
| 6077 | + | |
| 6078 | + | |
| 6079 | + | |
6077 | 6080 | | |
6078 | | - | |
| 6081 | + | |
| 6082 | + | |
| 6083 | + | |
6079 | 6084 | | |
6080 | 6085 | | |
6081 | 6086 | | |
| |||
0 commit comments