Mercurial > vim
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 { |