57 lines
1.4 KiB
Diff
57 lines
1.4 KiB
Diff
|
|
From 53a70289c2712808e6d4e88927e03cac01b470dd Mon Sep 17 00:00:00 2001
|
|||
|
|
From: Bram Moolenaar <Bram@vim.org>
|
|||
|
|
Date: Mon, 9 May 2022 13:15:07 +0100
|
|||
|
|
Subject: [PATCH] patch 8.2.4925: trailing backslash may cause reading past end
|
|||
|
|
of line
|
|||
|
|
|
|||
|
|
Problem: Trailing backslash may cause reading past end of line.
|
|||
|
|
Solution: Check for NUL after backslash.
|
|||
|
|
---
|
|||
|
|
src/search.c | 4 ++++
|
|||
|
|
src/testdir/test_textobjects.vim | 10 +++++++++-
|
|||
|
|
2 files changed, 13 insertions(+), 1 deletion(-)
|
|||
|
|
|
|||
|
|
diff --git a/src/search.c b/src/search.c
|
|||
|
|
index 1a5dc1a..75f0c59 100644
|
|||
|
|
--- a/src/search.c
|
|||
|
|
+++ b/src/search.c
|
|||
|
|
@@ -4457,7 +4457,11 @@ find_next_quote(
|
|||
|
|
if (c == NUL)
|
|||
|
|
return -1;
|
|||
|
|
else if (escape != NULL && vim_strchr(escape, c))
|
|||
|
|
+ {
|
|||
|
|
++col;
|
|||
|
|
+ if (line[col] == NUL)
|
|||
|
|
+ return -1;
|
|||
|
|
+ }
|
|||
|
|
else if (c == quotechar)
|
|||
|
|
break;
|
|||
|
|
if (has_mbyte)
|
|||
|
|
diff --git a/src/testdir/test_textobjects.vim b/src/testdir/test_textobjects.vim
|
|||
|
|
index 49fc9c8..3fc0283 100644
|
|||
|
|
--- a/src/testdir/test_textobjects.vim
|
|||
|
|
+++ b/src/testdir/test_textobjects.vim
|
|||
|
|
@@ -154,10 +154,18 @@ func Test_string_html_objects()
|
|||
|
|
call assert_equal('-<b></b>', getline('.'), e)
|
|||
|
|
|
|||
|
|
set quoteescape&
|
|||
|
|
+
|
|||
|
|
+ " this was going beyond the end of the line
|
|||
|
|
+ %del
|
|||
|
|
+ sil! norm i"\
|
|||
|
|
+ sil! norm i"\
|
|||
|
|
+ sil! norm i"\
|
|||
|
|
+ call assert_equal('"\', getline(1))
|
|||
|
|
+
|
|||
|
|
+ bwipe!
|
|||
|
|
endfor
|
|||
|
|
|
|||
|
|
set enc=utf-8
|
|||
|
|
- bwipe!
|
|||
|
|
endfunc
|
|||
|
|
|
|||
|
|
func Test_empty_html_tag()
|
|||
|
|
--
|
|||
|
|
1.8.3.1
|
|||
|
|
|