Mercurial > vim
diff src/fileio.c @ 11641:dbce7e03bf55 v8.0.0703
patch 8.0.0703: illegal memory access with empty :doau command
commit https://github.com/vim/vim/commit/faf29d7f91477c25c85d9d7165d90e8d8f1c512e
Author: Bram Moolenaar <Bram@vim.org>
Date: Sun Jul 9 11:07:16 2017 +0200
patch 8.0.0703: illegal memory access with empty :doau command
Problem: Illegal memory access with empty :doau command.
Solution: Check the event for being out of range. (James McCoy)
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Sun, 09 Jul 2017 11:15:03 +0200 |
parents | 16ccaedce025 |
children | 74abb6c84984 |
line wrap: on
line diff
--- a/src/fileio.c +++ b/src/fileio.c @@ -8863,7 +8863,7 @@ do_doautocmd( /* * Loop over the events. */ - while (*arg && !VIM_ISWHITE(*arg)) + while (*arg && !ends_excmd(*arg) && !VIM_ISWHITE(*arg)) if (apply_autocmds_group(event_name2nr(arg, &arg), fname, NULL, TRUE, group, curbuf, NULL)) nothing_done = FALSE; @@ -9385,7 +9385,8 @@ apply_autocmds_group( * Quickly return if there are no autocommands for this event or * autocommands are blocked. */ - if (first_autopat[(int)event] == NULL || autocmd_blocked > 0) + if (event == NUM_EVENTS || first_autopat[(int)event] == NULL + || autocmd_blocked > 0) goto BYPASS_AU; /* @@ -9458,7 +9459,7 @@ apply_autocmds_group( { if (event == EVENT_COLORSCHEME || event == EVENT_OPTIONSET) autocmd_fname = NULL; - else if (fname != NULL && *fname != NUL) + else if (fname != NULL && !ends_excmd(*fname)) autocmd_fname = fname; else if (buf != NULL) autocmd_fname = buf->b_ffname;