diff options
author | Bram Moolenaar <Bram@vim.org> | 2019-07-20 18:56:06 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2019-07-20 18:56:06 +0200 |
commit | 2a5b52758bb327b89d22660cc28c157ec29782e5 (patch) | |
tree | 47990749412bbb65ce8ec02c0580c10c0dd493f8 /src/regexp.c | |
parent | 331bafd481fddfe542099d8cccd38d240c10c011 (diff) |
patch 8.1.1720: crash with very long %[] patternv8.1.1720
Problem: Crash with very long %[] pattern. (Reza Mirzazade farkhani)
Solution: Check for reg_toolong. (closes #4703)
Diffstat (limited to 'src/regexp.c')
-rw-r--r-- | src/regexp.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/regexp.c b/src/regexp.c index 5676044660..7d0ac60681 100644 --- a/src/regexp.c +++ b/src/regexp.c @@ -2175,7 +2175,11 @@ regatom(int *flagp) if (ret == NULL) ret = br; else + { regtail(lastnode, br); + if (reg_toolong) + return NULL; + } ungetchr(); one_exactly = TRUE; @@ -2200,6 +2204,8 @@ regatom(int *flagp) if (OP(br) == BRANCH) { regtail(br, lastbranch); + if (reg_toolong) + return NULL; br = OPERAND(br); } else |