]> granicus.if.org Git - postgresql/commit
Add a stack overflow check to copyObject().
authorTom Lane <tgl@sss.pgh.pa.us>
Tue, 7 Dec 2010 03:56:07 +0000 (22:56 -0500)
committerTom Lane <tgl@sss.pgh.pa.us>
Tue, 7 Dec 2010 03:56:07 +0000 (22:56 -0500)
commit5271c3cd801cee7e571e9300b96108d7c11b9158
treecff1d16fb1419b532c2ff804fb8161e9270f0317
parentb0e2092319102c9a749ef4afd5efbdc37fb31b83
Add a stack overflow check to copyObject().

There are some code paths, such as SPI_execute(), where we invoke
copyObject() on raw parse trees before doing parse analysis on them.  Since
the bison grammar is capable of building heavily nested parsetrees while
itself using only minimal stack depth, this means that copyObject() can be
the front-line function that hits stack overflow before anything else does.
Accordingly, it had better have a check_stack_depth() call.  I did a bit of
performance testing and found that this slows down copyObject() by only a
few percent, so the hit ought to be negligible in the context of complete
processing of a query.

Per off-list report from Toshihide Katayama.  Back-patch to all supported
branches.
src/backend/nodes/copyfuncs.c