diff options
Diffstat (limited to 'src/backend/regex/rege_dfa.c')
-rw-r--r-- | src/backend/regex/rege_dfa.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/backend/regex/rege_dfa.c b/src/backend/regex/rege_dfa.c index a9305dd7ccd..a37e4b0ef96 100644 --- a/src/backend/regex/rege_dfa.c +++ b/src/backend/regex/rege_dfa.c @@ -627,6 +627,13 @@ lacon(struct vars * v, struct smalldfa sd; chr *end; + /* Since this is recursive, it could be driven to stack overflow */ + if (STACK_TOO_DEEP(v->re)) + { + ERR(REG_ETOOBIG); + return 0; + } + n = co - pcnfa->ncolors; assert(n < v->g->nlacons && v->g->lacons != NULL); FDEBUG(("=== testing lacon %d\n", n)); |