Mercurial > vim
comparison src/macros.h @ 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 | 695186e11daa |
children | 3fba3e8326a7 |
comparison
equal
deleted
inserted
replaced
9897:9d1354639a36 | 9898:bff8a09016a5 |
---|---|
272 /* Advance multi-byte pointer, do not skip over composing chars. */ | 272 /* Advance multi-byte pointer, do not skip over composing chars. */ |
273 # define mb_cptr_adv(p) p += enc_utf8 ? utf_ptr2len(p) : has_mbyte ? (*mb_ptr2len)(p) : 1 | 273 # define mb_cptr_adv(p) p += enc_utf8 ? utf_ptr2len(p) : has_mbyte ? (*mb_ptr2len)(p) : 1 |
274 /* Backup multi-byte pointer. Only use with "p" > "s" ! */ | 274 /* Backup multi-byte pointer. Only use with "p" > "s" ! */ |
275 # define mb_ptr_back(s, p) p -= has_mbyte ? ((*mb_head_off)(s, p - 1) + 1) : 1 | 275 # define mb_ptr_back(s, p) p -= has_mbyte ? ((*mb_head_off)(s, p - 1) + 1) : 1 |
276 /* get length of multi-byte char, not including composing chars */ | 276 /* get length of multi-byte char, not including composing chars */ |
277 # define mb_cptr2len(p) (enc_utf8 ? utf_ptr2len(p) : (*mb_ptr2len)(p)) | 277 # define MB_CPTR2LEN(p) (enc_utf8 ? utf_ptr2len(p) : (*mb_ptr2len)(p)) |
278 | 278 |
279 # define MB_COPY_CHAR(f, t) if (has_mbyte) mb_copy_char(&f, &t); else *t++ = *f++ | 279 # define MB_COPY_CHAR(f, t) if (has_mbyte) mb_copy_char(&f, &t); else *t++ = *f++ |
280 # define MB_CHARLEN(p) (has_mbyte ? mb_charlen(p) : (int)STRLEN(p)) | 280 # define MB_CHARLEN(p) (has_mbyte ? mb_charlen(p) : (int)STRLEN(p)) |
281 # define MB_CHAR2LEN(c) (has_mbyte ? mb_char2len(c) : 1) | 281 # define MB_CHAR2LEN(c) (has_mbyte ? mb_char2len(c) : 1) |
282 # define PTR2CHAR(p) (has_mbyte ? mb_ptr2char(p) : (int)*(p)) | 282 # define PTR2CHAR(p) (has_mbyte ? mb_ptr2char(p) : (int)*(p)) |
283 #else | 283 #else |
284 # define MB_PTR2LEN(p) 1 | 284 # define MB_PTR2LEN(p) 1 |
285 # define MB_CPTR2LEN(p) 1 | |
285 # define mb_ptr_adv(p) ++p | 286 # define mb_ptr_adv(p) ++p |
286 # define mb_cptr_adv(p) ++p | 287 # define mb_cptr_adv(p) ++p |
287 # define mb_ptr_back(s, p) --p | 288 # define mb_ptr_back(s, p) --p |
288 # define MB_COPY_CHAR(f, t) *t++ = *f++ | 289 # define MB_COPY_CHAR(f, t) *t++ = *f++ |
289 # define MB_CHARLEN(p) STRLEN(p) | 290 # define MB_CHARLEN(p) STRLEN(p) |