Use vim_strchr(s, c) when c may be NUL (#6656)

As part of the refactoring in #5119, some vim_strchr() were changed to
strchr().  However, vim_strchr() behaves differently than strchr() when
c is NUL, returning NULL instead of a pointer to the NUL.

Revert the strchr() calls where it isn't known whether c is NUL, since
this causes a semantic change the surrounding code doesn't expect.  In
the case of #6650, this led to a heap overrun.

Closes #6650
This commit is contained in:
James McCoy
2017-05-03 04:12:38 -04:00
committed by Justin M. Keyes
parent 08b23d0806
commit de50c003d5
4 changed files with 27 additions and 5 deletions

View File

@@ -584,7 +584,7 @@ static int command_line_execute(VimState *state, int key)
}
if (vim_ispathsep(ccline.cmdbuff[s->j])
#ifdef BACKSLASH_IN_FILENAME
&& strchr(" *?[{`$%#", ccline.cmdbuff[s->j + 1])
&& vim_strchr(" *?[{`$%#", ccline.cmdbuff[s->j + 1])
== NULL
#endif
) {