comparison 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
comparison
equal deleted inserted replaced
25754:f1ed9dbb700a 25755:33ebec729787
394 ++names.ga_len; 394 ++names.ga_len;
395 395
396 arg = skipwhite_and_linebreak(arg, evalarg); 396 arg = skipwhite_and_linebreak(arg, evalarg);
397 if (STRNCMP("as", arg, 2) == 0 && IS_WHITE_OR_NUL(arg[2])) 397 if (STRNCMP("as", arg, 2) == 0 && IS_WHITE_OR_NUL(arg[2]))
398 { 398 {
399 // skip over "as Name "; no line break allowed after "as" 399 // Skip over "as Name "; no line break allowed after "as".
400 // Do not allow for ':' and '#'.
400 arg = skipwhite(arg + 2); 401 arg = skipwhite(arg + 2);
401 p = arg; 402 p = arg;
402 if (eval_isnamec1(*arg)) 403 if (eval_isnamec1(*arg))
403 while (eval_isnamec(*arg)) 404 while (ASCII_ISALNUM(*arg) || *arg == '_')
404 ++arg; 405 ++arg;
406 if (p == arg || !(IS_WHITE_OR_NUL(*arg)
407 || (mult && (*arg == ',' || *arg == '}'))))
408 {
409 semsg(_(e_syntax_error_in_import_str), p);
410 goto erret;
411 }
405 if (check_defined(p, arg - p, cctx, FALSE) == FAIL) 412 if (check_defined(p, arg - p, cctx, FALSE) == FAIL)
406 goto erret; 413 goto erret;
407 as_name = vim_strnsave(p, arg - p); 414 as_name = vim_strnsave(p, arg - p);
408 arg = skipwhite_and_linebreak(arg, evalarg); 415 arg = skipwhite_and_linebreak(arg, evalarg);
409 } 416 }
437 } 444 }
438 arg = skipwhite_and_linebreak(arg, evalarg); 445 arg = skipwhite_and_linebreak(arg, evalarg);
439 446
440 if (names.ga_len == 0) 447 if (names.ga_len == 0)
441 { 448 {
442 emsg(_(e_syntax_error_in_import)); 449 semsg(_(e_syntax_error_in_import_str), arg_start);
443 goto erret; 450 goto erret;
444 } 451 }
445 452
446 if (STRNCMP("from", arg, 4) != 0 || !IS_WHITE_OR_NUL(arg[4])) 453 if (STRNCMP("from", arg, 4) != 0 || !IS_WHITE_OR_NUL(arg[4]))
447 { 454 {