mirror of
				https://github.com/postgres/postgres.git
				synced 2025-11-03 09:13:20 +03:00 
			
		
		
		
	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
This commit is contained in:
		@@ -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)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user