From baad3ef1eeaad75fa5337b0527ec9ede8c3e5446 Mon Sep 17 00:00:00 2001 From: CH3GREEN Date: Sun, 29 Dec 2024 02:21:56 +0800 Subject: [PATCH 1/2] fix CVE-2024-43802 --- src/getchar.c | 15 ++++++++++++--- src/testdir/crash/heap_overflow3 | Bin 0 -> 700 bytes src/testdir/test_crash.vim | 6 ++++++ src/version.c | 2 ++ 4 files changed, 20 insertions(+), 3 deletions(-) create mode 100644 src/testdir/crash/heap_overflow3 diff --git a/src/getchar.c b/src/getchar.c index 3427a9f..5184263 100644 --- a/src/getchar.c +++ b/src/getchar.c @@ -438,9 +438,18 @@ flush_buffers(flush_buffers_T flush_typeahead) if (flush_typeahead == FLUSH_MINIMAL) { - // remove mapped characters at the start only - typebuf.tb_off += typebuf.tb_maplen; - typebuf.tb_len -= typebuf.tb_maplen; + // remove mapped characters at the start only, + // but only when enough space left in typebuf + if (typebuf.tb_off + typebuf.tb_maplen >= typebuf.tb_buflen) + { + typebuf.tb_off = MAXMAPLEN; + typebuf.tb_len = 0; + } + else + { + typebuf.tb_off += typebuf.tb_maplen; + typebuf.tb_len -= typebuf.tb_maplen; + } #if defined(FEAT_CLIENTSERVER) || defined(FEAT_EVAL) if (typebuf.tb_len == 0) typebuf_was_filled = FALSE; diff --git a/src/testdir/crash/heap_overflow3 b/src/testdir/crash/heap_overflow3 new file mode 100644 index 0000000000000000000000000000000000000000..c40adbec4d07a66bcc9aa51e40dbbb90fdc36623 GIT binary patch literal 700 zcmZ{hO=}ZD7{@174?bQz$Wq8~blwYI0mDEj_I~ z#4Wyom4oY!P?qTMHvg-P`?`z?XefMGSG^v1AIK`kUr&%+VYMPErTK+N)J-JP>G^aT zAZ{Y$4E~`YaRD~2pecm*%CU(Fe%tiJC@&{d=*n|%Iir2jcC0(~G8oP(})qg5n(t`-d4 zkb2NTN-_lOVrS`Y1Znh89(*pxrqJZ4dI$ffVRxx=12p{UwvU2fK zL=pVy065g2)SJ{@pg|BdnJlURZ#nqNaXvTnpKCo#R~9`EqA#^V7G{Xf)9MjP&=9 Date: Fri, 3 Jan 2025 11:28:30 +0000 Subject: [PATCH 2/2] update src/version.c. Signed-off-by: CH3GREEN --- src/version.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/version.c b/src/version.c index f440140..2e178f3 100644 --- a/src/version.c +++ b/src/version.c @@ -704,8 +704,6 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ -/**/ - 17, /**/ 16, /**/ -- Gitee