From 985079c514e9ab85598b7bca019c77d3e42526f5 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sat, 16 Feb 2019 17:07:47 +0100 Subject: [PATCH] patch 8.1.0934: invalid memory access in search pattern Problem: Invalid memory access in search pattern. (Kuang-che Wu) Solution: Check for incomplete equivalence class. (closes #3970) --- src/regexp.c | 2 +- src/testdir/test_regexp_latin.vim | 7 +++++++ src/version.c | 2 ++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/regexp.c b/src/regexp.c index f06e15c83..30a604b23 100644 --- a/src/regexp.c +++ b/src/regexp.c @@ -730,7 +730,7 @@ get_equi_class(char_u **pp) int l = 1; char_u *p = *pp; - if (p[1] == '=') + if (p[1] == '=' && p[2] != NUL) { if (has_mbyte) l = (*mb_ptr2len)(p + 2); diff --git a/src/testdir/test_regexp_latin.vim b/src/testdir/test_regexp_latin.vim index bcac6c72c..09104a142 100644 --- a/src/testdir/test_regexp_latin.vim +++ b/src/testdir/test_regexp_latin.vim @@ -97,3 +97,10 @@ func Test_out_of_memory() " This will be slow... call assert_fails('call search("\\v((n||<)+);")', 'E363:') endfunc + +func Test_get_equi_class() + new + " Incomplete equivalence class caused invalid memory access + s/^/[[= + call assert_equal(1, search(getline(1))) +endfunc diff --git a/src/version.c b/src/version.c index 21b921787..dbf408341 100644 --- a/src/version.c +++ b/src/version.c @@ -779,6 +779,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 934, /**/ 933, /**/ -- 2.50.1