Mercurial > vim
diff src/regexp.c @ 17444:f4ce361bb1e5 v8.1.1720
patch 8.1.1720: crash with very long %[] pattern
commit https://github.com/vim/vim/commit/2a5b52758bb327b89d22660cc28c157ec29782e5
Author: Bram Moolenaar <Bram@vim.org>
Date: Sat Jul 20 18:56:06 2019 +0200
patch 8.1.1720: crash with very long %[] pattern
Problem: Crash with very long %[] pattern. (Reza Mirzazade farkhani)
Solution: Check for reg_toolong. (closes https://github.com/vim/vim/issues/4703)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sat, 20 Jul 2019 19:00:06 +0200 |
parents | ce04ebdf26b8 |
children | ff097edaae89 |
line wrap: on
line diff
--- 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