changeset 17208:13d0753511fe v8.1.1603

patch 8.1.1603: crash when using unknown highlighting in text property commit https://github.com/vim/vim/commit/d74af4227b4e961bbab6ec9aa36512464434a1ad Author: Bram Moolenaar <Bram@vim.org> Date: Fri Jun 28 21:38:00 2019 +0200 patch 8.1.1603: crash when using unknown highlighting in text property Problem: Crash when using unknown highlighting in text property. Solution: Check for zero highlight ID.
author Bram Moolenaar <Bram@vim.org>
date Fri, 28 Jun 2019 21:45:05 +0200
parents 026b6b81e913
children 755469df71bc
files src/screen.c src/testdir/test_textprop.vim src/version.c
diffstat 3 files changed, 15 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/screen.c
+++ b/src/screen.c
@@ -3171,7 +3171,7 @@ win_line(
     int		row;			/* row in the window, excl w_winrow */
     int		screen_row;		/* row on the screen, incl w_winrow */
 
-    char_u	extra[18];		/* "%ld" and 'fdc' must fit in here */
+    char_u	extra[20];		/* "%ld" and 'fdc' must fit in here */
     int		n_extra = 0;		/* number of extra chars */
     char_u	*p_extra = NULL;	/* string of extra chars, plus NUL */
     char_u	*p_extra_free = NULL;   /* p_extra needs to be freed */
@@ -4440,7 +4440,7 @@ win_line(
 			proptype_T  *pt = text_prop_type_by_id(
 					wp->w_buffer, text_props[tpi].tp_type);
 
-			if (pt != NULL)
+			if (pt != NULL && pt->pt_hl_id > 0)
 			{
 			    int pt_attr = syn_id2attr(pt->pt_hl_id);
 
--- a/src/testdir/test_textprop.vim
+++ b/src/testdir/test_textprop.vim
@@ -792,6 +792,17 @@ func Test_textprop_empty_buffer()
   call prop_type_delete('comment')
 endfunc
 
+" Adding a text property with invalid highlight should be ignored.
+func Test_textprop_invalid_highlight()
+  call assert_fails("call prop_type_add('dni', {'highlight': 'DoesNotExist'})", 'E970:')
+  new
+  call setline(1, ['asdf','asdf'])
+  call prop_add(1, 1, {'length': 4, 'type': 'dni'})
+  redraw
+  bwipe!
+  call prop_type_delete('dni')
+endfunc
+
 " Adding a text property to an empty buffer and then editing another
 func Test_textprop_empty_buffer_next()
   call prop_type_add("xxx", {})
--- a/src/version.c
+++ b/src/version.c
@@ -778,6 +778,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1603,
+/**/
     1602,
 /**/
     1601,