]> git.ipfire.org Git - thirdparty/postgresql.git/commit
Defend against stack overrun in a few more places.
authorTom Lane <tgl@sss.pgh.pa.us>
Wed, 24 Aug 2022 17:01:40 +0000 (13:01 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Wed, 24 Aug 2022 17:01:40 +0000 (13:01 -0400)
commit310d734efb3bb541953893a800bab4ed1b968908
tree07a4397f58d648c6a2b2c6c862f8cd6dcc3346a5
parent04056e9268be5584ac55c0009687ee38022fb007
Defend against stack overrun in a few more places.

SplitToVariants() in the ispell code, lseg_inside_poly() in geo_ops.c,
and regex_selectivity_sub() in selectivity estimation could recurse
until stack overflow; fix by adding check_stack_depth() calls.
So could next() in the regex compiler, but that case is better fixed by
converting its tail recursion to a loop.  (We probably get better code
that way too, since next() can now be inlined into its sole caller.)

There remains a reachable stack overrun in the Turkish stemmer, but
we'll need some advice from the Snowball people about how to fix that.

Per report from Egor Chindyaskin and Alexander Lakhin.  These mistakes
are old, so back-patch to all supported branches.

Richard Guo and Tom Lane

Discussion: https://postgr.es/m/1661334672.728714027@f473.i.mail.ru
src/backend/regex/regc_lex.c
src/backend/tsearch/spell.c
src/backend/utils/adt/geo_ops.c
src/backend/utils/adt/selfuncs.c