postgres.git / summary / log / commit / refs

commit    3a60c8bb1698ddde56ee2a0749c75aa1399556fc
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 4640225dd48..ca36572cd36 100644 --- a/src/backend/tcop/utility.c +++ b/src/backend/tcop/utility.c @@ -332,6 +332,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: 0c99e71965d3]