Mercurial > vim
diff src/evalfunc.c @ 9898:bff8a09016a5 v7.4.2223
commit https://github.com/vim/vim/commit/d3c907b5d2b352482b580a0cf687cbbea4c19ea1
Author: Bram Moolenaar <Bram@vim.org>
Date: Wed Aug 17 21:32:09 2016 +0200
patch 7.4.2223
Problem: Buffer overflow when using latin1 character with feedkeys().
Solution: Check for an illegal character. Add a test.
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Wed, 17 Aug 2016 21:45:07 +0200 |
parents | 4b53f6be10c0 |
children | daecffbd0322 |
line wrap: on
line diff
--- a/src/evalfunc.c +++ b/src/evalfunc.c @@ -11166,7 +11166,7 @@ f_strgetchar(typval_T *argvars, typval_T break; } --charidx; - byteidx += mb_cptr2len(str + byteidx); + byteidx += MB_CPTR2LEN(str + byteidx); } } #else @@ -11326,7 +11326,7 @@ f_strcharpart(typval_T *argvars, typval_ if (nchar > 0) while (nchar > 0 && nbyte < slen) { - nbyte += mb_cptr2len(p + nbyte); + nbyte += MB_CPTR2LEN(p + nbyte); --nchar; } else @@ -11341,7 +11341,7 @@ f_strcharpart(typval_T *argvars, typval_ if (off < 0) len += 1; else - len += mb_cptr2len(p + off); + len += MB_CPTR2LEN(p + off); --charlen; } }