1
0
forked from aniani/vim

patch 8.2.4418: crash when using special multi-byte character

Problem:    Crash when using special multi-byte character.
Solution:   Don't use isalpha() for an arbitrary character.
This commit is contained in:
Bram Moolenaar
2022-02-19 11:20:12 +00:00
parent e89bfd212b
commit 5921aeb574
5 changed files with 18 additions and 2 deletions

View File

@@ -1644,6 +1644,12 @@ vim_isupper(int c)
return isupper(c);
}
int
vim_isalpha(int c)
{
return vim_islower(c) || vim_isupper(c);
}
int
vim_toupper(int c)
{

View File

@@ -3626,7 +3626,7 @@ unix_expandpath(
else if (path_end >= path + wildoff
&& (vim_strchr((char_u *)"*?[{~$", *path_end) != NULL
|| (!p_fic && (flags & EW_ICASE)
&& isalpha(PTR2CHAR(path_end)))))
&& vim_isalpha(PTR2CHAR(path_end)))))
e = p;
if (has_mbyte)
{

View File

@@ -50,6 +50,7 @@ int vim_isxdigit(int c);
int vim_isbdigit(int c);
int vim_islower(int c);
int vim_isupper(int c);
int vim_isalpha(int c);
int vim_toupper(int c);
int vim_tolower(int c);
char_u *skiptowhite(char_u *p);
@@ -63,5 +64,4 @@ int hexhex2nr(char_u *p);
int rem_backslash(char_u *str);
void backslash_halve(char_u *p);
char_u *backslash_halve_save(char_u *p);
void ebcdic2ascii(char_u *buffer, int len);
/* vim: set ft=c : */

View File

@@ -110,4 +110,12 @@ func Test_verbose_pwd()
call delete('Xautodir', 'rf')
endfunc
func Test_multibyte()
" using an invalid character should not cause a crash
set wic
call assert_fails('tc <20><><EFBFBD><EFBFBD><EFBFBD>*', 'E344:')
set nowic
endfunc
" vim: shiftwidth=2 sts=2 expandtab

View File

@@ -750,6 +750,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
4418,
/**/
4417,
/**/