aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/ex_docmd.c
diff options
context:
space:
mode:
authorJames McCoy <jamessan@jamessan.com>2017-05-03 04:12:38 -0400
committerJustin M. Keyes <justinkz@gmail.com>2017-05-03 10:12:38 +0200
commitde50c003d5b1097f93690a0d9dc5fb03a2818024 (patch)
tree6f7bd51d0adfe755e52aa73da1e824caff5e4c52 /src/nvim/ex_docmd.c
parent08b23d08066c80eed3780195fcb1b0cb21aed79e (diff)
downloadrneovim-de50c003d5b1097f93690a0d9dc5fb03a2818024.tar.gz
rneovim-de50c003d5b1097f93690a0d9dc5fb03a2818024.tar.bz2
rneovim-de50c003d5b1097f93690a0d9dc5fb03a2818024.zip
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
Diffstat (limited to 'src/nvim/ex_docmd.c')
-rw-r--r--src/nvim/ex_docmd.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/nvim/ex_docmd.c b/src/nvim/ex_docmd.c
index 72b2e0f29b..108b7483b9 100644
--- a/src/nvim/ex_docmd.c
+++ b/src/nvim/ex_docmd.c
@@ -2687,7 +2687,7 @@ const char * set_one_cmd_context(
// 2. skip comment lines and leading space, colons or bars
const char *cmd;
- for (cmd = buff; strchr(" \t:|", *cmd) != NULL; cmd++) {
+ for (cmd = buff; vim_strchr((const char_u *)" \t:|", *cmd) != NULL; cmd++) {
}
xp->xp_pattern = (char_u *)cmd;
@@ -2748,7 +2748,7 @@ const char * set_one_cmd_context(
}
}
// check for non-alpha command
- if (p == cmd && strchr("@*!=><&~#", *p) != NULL) {
+ if (p == cmd && vim_strchr((const char_u *)"@*!=><&~#", *p) != NULL) {
p++;
}
len = (size_t)(p - cmd);
@@ -2779,7 +2779,7 @@ const char * set_one_cmd_context(
return NULL;
if (ea.cmdidx == CMD_SIZE) {
- if (*cmd == 's' && strchr("cgriI", cmd[1]) != NULL) {
+ if (*cmd == 's' && vim_strchr((const char_u *)"cgriI", cmd[1]) != NULL) {
ea.cmdidx = CMD_substitute;
p = cmd + 1;
} else if (cmd[0] >= 'A' && cmd[0] <= 'Z') {