postgres.git / summary / log / commit / refs
commit eb01ea2a364404e69a0dbfe1545ba919c9943c63
Author: Tom Lane <tgl@sss.pgh.pa.us>
Date: Mon Oct 15 18:01:38 2018 +0000
First released in: 12.0, 9.3.25, 9.4.20, 9.5.15, 9.6.11, 10.6, 11.0
Check for stack overrun in standard_ProcessUtility().
ProcessUtility can recurse, and indeed can be driven to infinite
recursion, so it ought to have a check_stack_depth() call. This
covers the reported bug (portal trying to execute itself) and a bunch
of other cases that could perhaps arise somewhere.
Per bug #15428 from Malthe Borch. Back-patch to all supported branches.
Discussion: https://postgr.es/m/15428-b3c2915ec470b033@postgresql.org
src/backend/tcop/utility.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/src/backend/tcop/utility.c b/src/backend/tcop/utility.c
index 5633d5046c2..872c2e9ce5a 100644
--- a/src/backend/tcop/utility.c
+++ b/src/backend/tcop/utility.c
@@ -333,6 +333,9 @@ standard_ProcessUtility(Node *parsetree,
{
bool isTopLevel = (context == PROCESS_UTILITY_TOPLEVEL);
+ /* This can recurse, so check for excessive recursion */
+ check_stack_depth();
+
check_xact_readonly(parsetree);
if (completionTag)
[parent: 7c525519d802]