Patch 7.4.2235 Problem: submatch() does not check for a valid argument. Solution: Give an error if the argument is out of range. (Dominique Pelle) Files: src/evalfunc.c, src/testdir/test_expr.vim
*** ../vim-7.4.2234/src/evalfunc.c 2016-08-21 14:36:11.968845449 +0200 --- src/evalfunc.c 2016-08-21 15:21:22.084628024 +0200 *************** *** 11491,11497 **** no = (int)get_tv_number_chk(&argvars[0], &error); if (error) return; ! error = FALSE; if (argvars[1].v_type != VAR_UNKNOWN) retList = (int)get_tv_number_chk(&argvars[1], &error); if (error) --- 11491,11501 ---- no = (int)get_tv_number_chk(&argvars[0], &error); if (error) return; ! if (no < 0 || no >= NSUBEXP) ! { ! EMSGN(_("E935: invalid submatch number: %d"), no); ! return; ! } if (argvars[1].v_type != VAR_UNKNOWN) retList = (int)get_tv_number_chk(&argvars[1], &error); if (error) *** ../vim-7.4.2234/src/testdir/test_expr.vim 2016-08-21 14:36:11.968845449 +0200 --- src/testdir/test_expr.vim 2016-08-21 15:23:33.719456292 +0200 *************** *** 198,203 **** --- 198,208 ---- call assert_equal('--', substitute('xxx', 'x*', {-> '-' . Recurse() . '-'}, '')) endfunc + func Test_invalid_submatch() + " This was causing invalid memory access in Vim-7.4.2232 and older + call assert_fails("call substitute('x', '.', {-> submatch(10)}, '')", 'E935:') + endfunc + func Test_substitute_expr_arg() call assert_equal('123456789-123456789=', substitute('123456789', \ '\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)', *** ../vim-7.4.2234/src/version.c 2016-08-21 14:59:59.916038353 +0200 --- src/version.c 2016-08-21 15:22:47.431868327 +0200 *************** *** 765,766 **** --- 765,768 ---- { /* Add new patch number below this line */ + /**/ + 2235, /**/ -- hundred-and-one symptoms of being an internet addict: 39. You move into a new house and decide to Netscape before you landscape. /// Bram Moolenaar -- b...@moolenaar.net -- http://www.Moolenaar.net \\\ /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ \\\ an exciting new programming language -- http://www.Zimbu.org /// \\\ help me help AIDS victims -- http://ICCF-Holland.org /// -- -- You received this message from the "vim_dev" maillist. Do not top-post! Type your reply below the text you are replying to. For more information, visit http://www.vim.org/maillist.php --- You received this message because you are subscribed to the Google Groups "vim_dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to vim_dev+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.