# HG changeset patch # User Bram Moolenaar # Date 1613313903 -3600 # Node ID 0b1f5717dc4d135d69bd66d7d797d32340d37ade # Parent ae156af6f28a4c66832880827a3f336a83636905 patch 8.2.2515: memory access error when truncating an empty message Commit: https://github.com/vim/vim/commit/6281815eccc3ded54960f7798833ceb39561b9a0 Author: Bram Moolenaar 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) diff --git a/src/message.c b/src/message.c --- 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; diff --git a/src/message_test.c b/src/message_test.c --- 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"); diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -751,6 +751,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 2515, +/**/ 2514, /**/ 2513,