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