Mercurial > vim
changeset 23946:0b1f5717dc4d v8.2.2515
patch 8.2.2515: memory access error when truncating an empty message
Commit: https://github.com/vim/vim/commit/6281815eccc3ded54960f7798833ceb39561b9a0
Author: Bram Moolenaar <Bram@vim.org>
Date: Sun Feb 14 15:37:30 2021 +0100
patch 8.2.2515: memory access error when truncating an empty message
Problem: Memory access error when truncating an empty message.
Solution: Check for an empty string. (Dominique Pell?, closes https://github.com/vim/vim/issues/7841)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sun, 14 Feb 2021 15:45:03 +0100 |
parents | ae156af6f28a |
children | e99448a2d0a9 |
files | src/message.c src/message_test.c src/version.c |
diffstat | 3 files changed, 18 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/message.c +++ b/src/message.c @@ -248,6 +248,13 @@ trunc_string( int i; int n; + if (*s == NUL) + { + if (buflen > 0) + *buf = NUL; + return; + } + if (room_in < 3) room = 0; half = room / 2;
--- a/src/message_test.c +++ b/src/message_test.c @@ -49,6 +49,15 @@ test_trunc_string(void) char_u *buf; /*allocated every time to find uninit errors */ char_u *s; + // Should not write anything to destination if buflen is 0. + trunc_string((char_u *)"", NULL, 1, 0); + + // Truncating an empty string does nothing. + buf = alloc(1); + trunc_string((char_u *)"", buf, 1, 1); + assert(buf[0] == NUL); + vim_free(buf); + // in place buf = alloc(40); STRCPY(buf, "text");