Mercurial > vim
diff src/vim9script.c @ 25755:33ebec729787 v8.2.3413
patch 8.2.3413: Vim9: too many characters are allowed in import name
Commit: https://github.com/vim/vim/commit/a9e3d560877489acf751f99e045ab1d78e13249c
Author: Bram Moolenaar <Bram@vim.org>
Date: Wed Sep 8 12:31:35 2021 +0200
patch 8.2.3413: Vim9: too many characters are allowed in import name
Problem: Vim9: too many characters are allowed in import name.
Solution: Disallow ':' and '#', check for white space. (closes https://github.com/vim/vim/issues/8845)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Wed, 08 Sep 2021 12:45:04 +0200 |
parents | 4e13cde003a8 |
children | 4003fc2340dc |
line wrap: on
line diff
--- a/src/vim9script.c +++ b/src/vim9script.c @@ -396,12 +396,19 @@ handle_import( arg = skipwhite_and_linebreak(arg, evalarg); if (STRNCMP("as", arg, 2) == 0 && IS_WHITE_OR_NUL(arg[2])) { - // skip over "as Name "; no line break allowed after "as" + // Skip over "as Name "; no line break allowed after "as". + // Do not allow for ':' and '#'. arg = skipwhite(arg + 2); p = arg; if (eval_isnamec1(*arg)) - while (eval_isnamec(*arg)) + while (ASCII_ISALNUM(*arg) || *arg == '_') ++arg; + if (p == arg || !(IS_WHITE_OR_NUL(*arg) + || (mult && (*arg == ',' || *arg == '}')))) + { + semsg(_(e_syntax_error_in_import_str), p); + goto erret; + } if (check_defined(p, arg - p, cctx, FALSE) == FAIL) goto erret; as_name = vim_strnsave(p, arg - p); @@ -439,7 +446,7 @@ handle_import( if (names.ga_len == 0) { - emsg(_(e_syntax_error_in_import)); + semsg(_(e_syntax_error_in_import_str), arg_start); goto erret; }