Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit d48da36

Browse files
committed
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
1 parent 5b75a4f commit d48da36

File tree

1 file changed

+3
-0
lines changed

1 file changed

+3
-0
lines changed

src/backend/tcop/utility.c

+3
Original file line numberDiff line numberDiff line change
@@ -387,6 +387,9 @@ standard_ProcessUtility(PlannedStmt *pstmt,
387387
bool isAtomicContext = (!(context == PROCESS_UTILITY_TOPLEVEL || context == PROCESS_UTILITY_QUERY_NONATOMIC) || IsTransactionBlock());
388388
ParseState *pstate;
389389

390+
/* This can recurse, so check for excessive recursion */
391+
check_stack_depth();
392+
390393
check_xact_readonly(parsetree);
391394

392395
if (completionTag)

0 commit comments

Comments
 (0)