forked from aniani/vim
patch 9.0.0289: invalid memory write
Problem: Invalid memory write. Solution: Do not put NUL in a static string.
This commit is contained in:
parent
9198de3ae2
commit
beedd0a266
@ -2237,20 +2237,41 @@ msg_puts_attr_len(char *str, int maxlen, int attr)
|
|||||||
static void
|
static void
|
||||||
put_msg_win(win_T *wp, int where, char_u *t_s, char_u *end, linenr_T lnum)
|
put_msg_win(win_T *wp, int where, char_u *t_s, char_u *end, linenr_T lnum)
|
||||||
{
|
{
|
||||||
int c = *end;
|
char_u *p;
|
||||||
|
|
||||||
*end = NUL;
|
|
||||||
if (where == PUT_BELOW)
|
if (where == PUT_BELOW)
|
||||||
ml_append_buf(wp->w_buffer, lnum, t_s, (colnr_T)0, FALSE);
|
{
|
||||||
|
if (*end != NUL)
|
||||||
|
{
|
||||||
|
p = vim_strnsave(t_s, end - t_s);
|
||||||
|
if (p == NULL)
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
p = t_s;
|
||||||
|
ml_append_buf(wp->w_buffer, lnum, p, (colnr_T)0, FALSE);
|
||||||
|
if (p != t_s)
|
||||||
|
vim_free(p);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
char_u *newp;
|
char_u *newp;
|
||||||
|
|
||||||
curbuf = wp->w_buffer;
|
curbuf = wp->w_buffer;
|
||||||
if (where == PUT_APPEND)
|
if (where == PUT_APPEND)
|
||||||
|
{
|
||||||
newp = concat_str(ml_get(lnum), t_s);
|
newp = concat_str(ml_get(lnum), t_s);
|
||||||
|
if (newp == NULL)
|
||||||
|
return;
|
||||||
|
if (*end != NUL)
|
||||||
|
newp[STRLEN(ml_get(lnum)) + (end - t_s)] = NUL;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
newp = vim_strnsave(t_s, end - t_s);
|
newp = vim_strnsave(t_s, end - t_s);
|
||||||
|
if (newp == NULL)
|
||||||
|
return;
|
||||||
|
}
|
||||||
ml_replace(lnum, newp, FALSE);
|
ml_replace(lnum, newp, FALSE);
|
||||||
curbuf = curwin->w_buffer;
|
curbuf = curwin->w_buffer;
|
||||||
}
|
}
|
||||||
@ -2258,8 +2279,6 @@ put_msg_win(win_T *wp, int where, char_u *t_s, char_u *end, linenr_T lnum)
|
|||||||
|
|
||||||
// set msg_col so that a newline is written if needed
|
// set msg_col so that a newline is written if needed
|
||||||
msg_col = STRLEN(t_s);
|
msg_col = STRLEN(t_s);
|
||||||
|
|
||||||
*end = c;
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -707,6 +707,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
289,
|
||||||
/**/
|
/**/
|
||||||
288,
|
288,
|
||||||
/**/
|
/**/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user