0
0
mirror of https://github.com/vim/vim.git synced 2025-07-26 11:04:33 -04:00

patch 8.2.2793: MS-Windows: string literals are writable with MSVC

Problem:    MS-Windows: string literals are writable with MSVC.
Solution:   Add the /GF compiler flag.  Make mch_write() safer. (Ken Takata,
            closes #8133)
This commit is contained in:
Bram Moolenaar 2021-04-21 11:30:48 +02:00
parent 9ce47ec0b6
commit d23f8bde5c
3 changed files with 9 additions and 6 deletions

View File

@ -489,7 +489,7 @@ CON_LIB = $(CON_LIB) /DELAYLOAD:comdlg32.dll /DELAYLOAD:ole32.dll DelayImp.lib
#VIMRCLOC = somewhere
#VIMRUNTIMEDIR = somewhere
CFLAGS = -c /W3 /nologo $(CVARS) -I. -Iproto -DHAVE_PATHDEF -DWIN32 \
CFLAGS = -c /W3 /GF /nologo $(CVARS) -I. -Iproto -DHAVE_PATHDEF -DWIN32 \
$(CSCOPE_DEFS) $(TERM_DEFS) $(SOUND_DEFS) $(NETBEANS_DEFS) $(CHANNEL_DEFS) \
$(NBDEBUG_DEFS) $(XPM_DEFS) \
$(DEFINES) -DWINVER=$(WINVER) -D_WIN32_WINNT=$(WINVER)

View File

@ -6406,15 +6406,13 @@ mch_write(
char_u *s,
int len)
{
char_u *end = s + len;
# ifdef VIMDLL
if (gui.in_use)
return;
# endif
// Avoid writing to a string literal.
if (s[len] != NUL)
s[len] = NUL;
if (!term_console)
{
write(1, s, (unsigned)len);
@ -6435,10 +6433,13 @@ mch_write(
return;
}
while ((ch = s[++prefix]))
while (s + ++prefix < end)
{
ch = s[prefix];
if (ch <= 0x1e && !(ch != '\n' && ch != '\r' && ch != '\b'
&& ch != '\a' && ch != '\033'))
break;
}
if (p_wd)
{

View File

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