diff options
author | Tom Lane | 2018-10-15 18:01:38 +0000 |
---|---|---|
committer | Tom Lane | 2018-10-15 18:01:38 +0000 |
commit | d48da369ab22a8326d4d3d2b05b574d581057193 (patch) | |
tree | 6f154ff2cabf10301c36e5383ab431a907cc292f | |
parent | 5b75a4f8266a4f187a47929fed0582ee778c703f (diff) |
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/[email protected]
-rw-r--r-- | src/backend/tcop/utility.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/backend/tcop/utility.c b/src/backend/tcop/utility.c index ede1621d3e..970c94ee80 100644 --- a/src/backend/tcop/utility.c +++ b/src/backend/tcop/utility.c @@ -387,6 +387,9 @@ standard_ProcessUtility(PlannedStmt *pstmt, bool isAtomicContext = (!(context == PROCESS_UTILITY_TOPLEVEL || context == PROCESS_UTILITY_QUERY_NONATOMIC) || IsTransactionBlock()); ParseState *pstate; + /* This can recurse, so check for excessive recursion */ + check_stack_depth(); + check_xact_readonly(parsetree); if (completionTag) |