changeset 30815:90a257beac7a v9.0.0742

patch 9.0.0742: reading past end of the line when compiling a function Commit: https://github.com/vim/vim/commit/3558afe9e9e904cabb8475392d859f2d2fc21041 Author: Bram Moolenaar <Bram@vim.org> Date: Thu Oct 13 16:12:57 2022 +0100 patch 9.0.0742: reading past end of the line when compiling a function Problem: Reading past end of the line when compiling a function with errors. Solution: Do not return an invalid pointer. Fix skipping redirection.
author Bram Moolenaar <Bram@vim.org>
date Thu, 13 Oct 2022 17:15:05 +0200
parents b3d8ec41adf1
children 33f1af1a6fb4
files src/testdir/test_vim9_func.vim src/testdir/test_vim9_script.vim src/version.c src/vim9cmds.c src/vim9compile.c
diffstat 5 files changed, 109 insertions(+), 33 deletions(-) [+]
line wrap: on
line diff
index 38766e3301568cc42a62de65fa6676e18e3d25b5..bb5635626484e3f2d732718f0c9fa0d704a9daf2
GIT binary patch
literal 101796
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
--- a/src/testdir/test_vim9_script.vim
+++ b/src/testdir/test_vim9_script.vim
@@ -2136,15 +2136,66 @@ enddef
 
 def Test_skipped_redir()
   var lines =<< trim END
-      def T()
+      def Tredir()
         if 0
-          redir =>l[0]
+          redir => l[0]
+          redir END
+        endif
+      enddef
+      defcompile
+  END
+  v9.CheckScriptSuccess(lines)
+  delfunc g:Tredir
+
+  lines =<< trim END
+      def Tredir()
+        if 0
+          redir => l[0]
+        endif
+        echo 'executed'
+        if 0
           redir END
         endif
       enddef
       defcompile
   END
   v9.CheckScriptSuccess(lines)
+  delfunc g:Tredir
+
+  lines =<< trim END
+      def Tredir()
+        var l = ['']
+        if 1
+          redir => l[0]
+        endif
+        echo 'executed'
+        if 0
+          redir END
+        else
+          redir END
+        endif
+      enddef
+      defcompile
+  END
+  v9.CheckScriptSuccess(lines)
+  delfunc g:Tredir
+
+  lines =<< trim END
+      let doit = 1
+      def Tredir()
+        var l = ['']
+        if g:doit
+          redir => l[0]
+        endif
+        echo 'executed'
+        if g:doit
+          redir END
+        endif
+      enddef
+      defcompile
+  END
+  v9.CheckScriptSuccess(lines)
+  delfunc g:Tredir
 enddef
 
 def Test_for_loop()
--- a/src/version.c
+++ b/src/version.c
@@ -700,6 +700,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    742,
+/**/
     741,
 /**/
     740,
--- a/src/vim9cmds.c
+++ b/src/vim9cmds.c
@@ -2412,34 +2412,37 @@ compile_redir(char_u *line, exarg_T *eap
     {
 	if (STRNCMP(arg, "END", 3) == 0)
 	{
-	    if (lhs->lhs_append)
+	    if (cctx->ctx_skip != SKIP_YES)
 	    {
-		// First load the current variable value.
-		if (compile_load_lhs_with_index(lhs, lhs->lhs_whole,
+		if (lhs->lhs_append)
+		{
+		    // First load the current variable value.
+		    if (compile_load_lhs_with_index(lhs, lhs->lhs_whole,
 								 cctx) == FAIL)
-		    return NULL;
-	    }
+			return NULL;
+		}
 
-	    // Gets the redirected text and put it on the stack, then store it
-	    // in the variable.
-	    generate_instr_type(cctx, ISN_REDIREND, &t_string);
+		// Gets the redirected text and put it on the stack, then store
+		// it in the variable.
+		generate_instr_type(cctx, ISN_REDIREND, &t_string);
 
-	    if (lhs->lhs_append)
-		generate_CONCAT(cctx, 2);
+		if (lhs->lhs_append)
+		    generate_CONCAT(cctx, 2);
 
-	    if (lhs->lhs_has_index)
-	    {
-		// Use the info in "lhs" to store the value at the index in the
-		// list or dict.
-		if (compile_assign_unlet(lhs->lhs_whole, lhs, TRUE,
+		if (lhs->lhs_has_index)
+		{
+		    // Use the info in "lhs" to store the value at the index in
+		    // the list or dict.
+		    if (compile_assign_unlet(lhs->lhs_whole, lhs, TRUE,
 						      &t_string, cctx) == FAIL)
+			return NULL;
+		}
+		else if (generate_store_lhs(cctx, lhs, -1, FALSE) == FAIL)
 		    return NULL;
+
+		VIM_CLEAR(lhs->lhs_name);
+		VIM_CLEAR(lhs->lhs_whole);
 	    }
-	    else if (generate_store_lhs(cctx, lhs, -1, FALSE) == FAIL)
-		return NULL;
-
-	    VIM_CLEAR(lhs->lhs_name);
-	    VIM_CLEAR(lhs->lhs_whole);
 	    return arg + 3;
 	}
 	emsg(_(e_cannot_nest_redir));
@@ -2465,13 +2468,20 @@ compile_redir(char_u *line, exarg_T *eap
 	if (need_type(&t_string, lhs->lhs_member_type,
 					    -1, 0, cctx, FALSE, FALSE) == FAIL)
 	    return NULL;
-	generate_instr(cctx, ISN_REDIRSTART);
-	lhs->lhs_append = append;
-	if (lhs->lhs_has_index)
+	if (cctx->ctx_skip == SKIP_YES)
+	{
+	    VIM_CLEAR(lhs->lhs_name);
+	}
+	else
 	{
-	    lhs->lhs_whole = vim_strnsave(arg, lhs->lhs_varlen_total);
-	    if (lhs->lhs_whole == NULL)
-		return NULL;
+	    generate_instr(cctx, ISN_REDIRSTART);
+	    lhs->lhs_append = append;
+	    if (lhs->lhs_has_index)
+	    {
+		lhs->lhs_whole = vim_strnsave(arg, lhs->lhs_varlen_total);
+		if (lhs->lhs_whole == NULL)
+		    return NULL;
+	    }
 	}
 
 	return arg + lhs->lhs_varlen_total;
--- a/src/vim9compile.c
+++ b/src/vim9compile.c
@@ -1284,6 +1284,19 @@ vim9_declare_error(char_u *name)
 }
 
 /*
+ * Return TRUE if "name" is a valid register to use.
+ * Return FALSE and give an error message if not.
+ */
+    static int
+valid_dest_reg(int name)
+{
+    if ((name == '@' || valid_yank_reg(name, FALSE)) && name != '.')
+	return TRUE;
+    emsg_invreg(name);
+    return FAIL;
+}
+
+/*
  * For one assignment figure out the type of destination.  Return it in "dest".
  * When not recognized "dest" is not set.
  * For an option "option_scope" is set.
@@ -1364,12 +1377,8 @@ get_var_dest(
     }
     else if (*name == '@')
     {
-	if (name[1] != '@'
-			&& (!valid_yank_reg(name[1], FALSE) || name[1] == '.'))
-	{
-	    emsg_invreg(name[1]);
+	if (!valid_dest_reg(name[1]))
 	    return FAIL;
-	}
 	*dest = dest_reg;
 	*type = name[1] == '#' ? &t_number_or_string : &t_string;
     }
@@ -1445,7 +1454,11 @@ compile_lhs(
     // "var_end" is the end of the variable/option/etc. name.
     lhs->lhs_dest_end = skip_var_one(var_start, FALSE);
     if (*var_start == '@')
+    {
+	if (!valid_dest_reg(var_start[1]))
+	    return FAIL;
 	var_end = var_start + 2;
+    }
     else
     {
 	// skip over the leading "&", "&l:", "&g:" and "$"