• Tom Lane's avatar
    Defend against stack overrun in a few more places. · 444ec169
    Tom Lane authored
    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
    444ec169
regc_lex.c 21.9 KB