diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2018-10-15 14:01:38 -0400 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2018-10-15 14:01:38 -0400 |
commit | 10412cef11efde3f865c8640d96d80fa262b3358 (patch) | |
tree | 8eb6d0925309881ac69745a1c7f3ed3cd472ceba | |
parent | d83dac37447cddfab8daf7fa1cbe6ec2d8887f6e (diff) | |
download | postgresql-10412cef11efde3f865c8640d96d80fa262b3358.tar.gz postgresql-10412cef11efde3f865c8640d96d80fa262b3358.zip |
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
-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 89f7056a6db..c41b3506605 100644 --- a/src/backend/tcop/utility.c +++ b/src/backend/tcop/utility.c @@ -357,6 +357,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) |