From 18c2aa25a129fb6e38696b2b0fcabbb5af003a34 Mon Sep 17 00:00:00 2001 From: Fredrik Lundh Date: Mon, 7 Aug 2000 17:33:38 +0000 Subject: [PATCH] + if USE_STACKCHECK is defined, use PyOS_CheckStack to look for excessive recursion. --- Modules/_sre.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Modules/_sre.c b/Modules/_sre.c index d3841d5c68..8add74e422 100644 --- a/Modules/_sre.c +++ b/Modules/_sre.c @@ -58,7 +58,9 @@ char copyright[] = " SRE 0.9.8 Copyright (c) 1997-2000 by Secret Labs AB "; /* optional features */ /* prevent run-away recursion (bad patterns on long strings) */ +#if !defined(USE_STACKCHECK) #define USE_RECURSION_LIMIT 10000 +#endif /* enables fast searching */ #define USE_FAST_SEARCH @@ -527,6 +529,11 @@ SRE_MATCH(SRE_STATE* state, SRE_CODE* pattern, int level) TRACE(("%8d: enter %d\n", PTR(ptr), level)); +#if defined(USE_STACKCHECK) + if (level % 10 == 0 && PyOS_CheckStack()) { + return SRE_ERROR_RECURSION_LIMIT; +#endif + #if defined(USE_RECURSION_LIMIT) if (level > USE_RECURSION_LIMIT) return SRE_ERROR_RECURSION_LIMIT; -- 2.40.0