Commit Graph

10300 Commits

Author SHA1 Message Date
KunMing Xie
44071fe77a vim-patch:8.0.0212: buffer for key name may be too small (#8009)
Problem:    The buffer used to store a key name theoreticaly could be too
            small. (Coverity)
Solution:   Count all possible modifier characters.  Add a check for the
            length just in case.

423977d3ce
2018-02-18 21:55:39 +01:00
Justin M. Keyes
71e89cec23
Merge #8018 from justinmk/test-eq_any 2018-02-18 19:59:06 +01:00
Justin M. Keyes
7973847d02 test/util: remove eq_any()
It was added in the parent commit, but ended up not being used. And
I can't think of a case where it will be used: instead we would probably
want to generalize expect_msg_seq() if necessary.
2018-02-18 19:22:44 +01:00
Justin M. Keyes
e72ecdb7ca test/util: expect_msg_seq()
job_spec.lua on AppVeyor (Windows) often fails like this:

      FAILED  ] C:/projects/neovim/test/functional\core\job_spec.lua @ 72: jobs changes to given `cwd` directory
    C:/projects/neovim/test/functional\core\job_spec.lua:81: Expected objects to be the same.
    Passed in:
    (table) {
      [1] = 'notification'
      [2] = 'stdout'
     *[3] = {
        [1] = 0
       *[2] = {
          [1] = 'C:\projects\neovim\Xtest-tmpdir\nvimmSjq1S\0' } } }
    Expected:
    (table) {
      [1] = 'notification'
      [2] = 'stdout'
     *[3] = {
        [1] = 0
       *[2] = {
          [1] = 'C:\projects\neovim\Xtest-tmpdir\nvimmSjq1S\0'
         *[2] = '' } } }
    stack traceback:

Message chunking is non-deterministic, so we need to try different
variants.
2018-02-18 19:19:03 +01:00
Björn Linse
8b543d09d8
Merge pull request #8011 from nimitbhardwaj/vim-8.0.0649
vim-patch:8.0.0649 and vim-patch:8.0.0650
2018-02-17 12:09:44 +01:00
Marco Hinz
2f018b1833
third-party: upgrade libunibilium from 1.2.1 to 2.0.0 (#8016)
❯ git log --oneline v2.0.0...v1.2.1
e3b16d6 (HEAD -> master, tag: v2.0.0, origin/master, origin/HEAD) version 2.0.0
6f0037b (origin/wide-int) update README with build instructions / prerequisites
f40c97a explicitly mention the new "wide integer" format in the man pages
37aa305 use ncurses*-config to get TERMINFO_DIRS if possible
2461ee1 use perl instead of sed hackery to create unibilium.pc
23e9dea don't cast between pointer types of different alignments
1b5b8fd add basic test for wide format
cfe4216 add xterm-256color; regenerate static tests from ncurses 6.1
6e55e75 escape backslashes properly
42f3cdd add 32 bit number support (wide terminfo format)
73385ba unibi-dump: accept a filename as argument
ec9ef0a don't pass NULL to memcpy
b42315b (origin/typecheck) make unibi_var_t slightly more type-safe
2018-02-17 00:35:39 +01:00
Nimit Bhardwaj
e9134421ab vim-patch-8.0.0649 and vim-patch-8.0.0650: autocmd open help 2 times 2018-02-17 00:02:16 +05:30
Danish Prakash
09b51bbf87 vim-patch:8.0.0323: one second pause when running cmdline test (#8015)
Problem:    When running the command line tests there is a one second wait.
Solution:   Change an Esc to Ctrl-C. (Yegappan Lakshmanan)

31eb139b88
2018-02-16 12:04:06 +01:00
Björn Linse
77286915a8
Merge pull request #8008 from bfredl/arrayfree
ex_getln: clear cmdline_block after it's freed
2018-02-14 19:23:11 +01:00
Björn Linse
d9497053e8 ex_getln: clear cmdline_block after it's freed 2018-02-14 19:20:28 +01:00
Justin M. Keyes
674cb2afde cmake/GetCompileFlags: remove duplicate include dirs
Reduces noise in :version message.
2018-02-14 09:57:58 +01:00
Björn Linse
0daa45bd44
Merge pull request #7759 from bfredl/ext_options
ui: refactor external widget options
2018-02-13 21:57:15 +01:00
Björn Linse
6e5cb0debd ui: refactor ui options 2018-02-13 20:48:51 +01:00
Justin M. Keyes
0f1bc5ddce test/python: less-noisy Python skip-message
Developer can use :checkhealth to get more details, don't need to blast
the details in the skip-message every time.
2018-02-12 13:24:48 +01:00
Justin M. Keyes
9e9e4431c1
Merge #8001 from justinmk/vimpatches 2018-02-12 02:59:29 +01:00
Justin M. Keyes
7da4d1561b lint 2018-02-12 01:32:52 +01:00
Justin M. Keyes
418947fcb3 Merge #7966 'vim-patch:8.0.0470,8.0.0471' 2018-02-12 00:55:56 +01:00
Justin M. Keyes
c68d89521f vim-patch:8.0.1271: still too many old style tests
Problem:    Still too many old style tests.
Solution:   Convert a few more tests to new style. (Yegappan Lakshmanan,
            closes vim/vim#2290)

fb094e14c1
2018-02-12 00:48:30 +01:00
KunMing Xie
6bcee20806 vim-patch:8.0.0490: vertical split makes 'winfixwidth' window smaller (#7990)
Problem:    Splitting a 'winfixwidth' window vertically makes it one column
            smaller. (Dominique Pelle)
Solution:   Add one to the width for the separator.
38e3483637
2018-02-12 00:00:24 +01:00
Justin M. Keyes
5191f963bf test/old: skip encoding=latin1 test 2018-02-11 23:53:05 +01:00
Justin M. Keyes
ef39f854d7 vim-patch:8.0.1302: still too many old style tests
Problem:    Still too many old style tests.
Solution:   Convert a few more tests to new style. (Yegappan Lakshmanan,
            closes vim/vim#2326)

209d3874c1
2018-02-11 23:30:18 +01:00
Justin M. Keyes
04993f220a vim-patch:8.0.1205: it is possible to unload a changed buffer
Problem:    Using "1q" it is possible to unload a changed buffer. (Rick Howe)
Solution:   Check the right window for changes.

ff930cad8a
2018-02-11 22:50:54 +01:00
Justin M. Keyes
2929dbf223 vim-patch:8.0.0858: can exit while a terminal is still running a job
Problem:    Can exit while a terminal is still running a job.
Solution:   Consider a buffer with a running job like a changed file.

eb44a68b42
2018-02-11 22:40:12 +01:00
Justin M. Keyes
3ffeceb851 vim-patch:8.0.1226: edit and popup tests failing
Problem:    Edit and popup tests failing.
Solution:   Make the tests pass.

2a45d64d0a
2018-02-11 22:40:12 +01:00
Justin M. Keyes
43631675d8 vim-patch:8.0.1333: some tests are run twice
Problem:    Some tests are run twice.
Solution:   Invoked most utf8 tests only from test_alot_utf8. (Yegappan
            Lakshmanan, closes vim/vim#2369)

2c997d7603
2018-02-11 22:40:12 +01:00
Justin M. Keyes
aaff91d925 vim-patch:8.0.0311: linebreak tests are old style
Problem:    Linebreak tests are old style.
Solution:   Turn the tests into new style. Share utility functions. (Ozaki
            Kiichi, closes vim/vim#1444)

544d3bc9f0
2018-02-11 22:40:12 +01:00
Justin M. Keyes
85e240c045 vim-patch:26a280c47a1c
Fix duplication of patch.

26a280c47a
2018-02-11 22:40:12 +01:00
Justin M. Keyes
67e3b1e0c5 vim-patch:8.0.0699: checksum tests are not actually run
Problem:    Checksum tests are not actually run.
Solution:   Add the tests to the list. (Dominique Pelle, closes vim/vim#1819)

710b4a1646
2018-02-11 20:15:44 +01:00
Justin M. Keyes
e3cfe7853d vim-patch:8.0.0684: old style tests are not nice
Problem:    Old style tests are not nice.
Solution:   Turn two tests into new style. (pschuh, closes vim/vim#1797)

28b238225a
2018-02-11 20:15:44 +01:00
Justin M. Keyes
1257b04747 vim-patch:8.0.0446: the ";" command does not work after some characters
Problem:    The ";" command does not work after characters with a lower byte
            that is NUL.
Solution:   Properly check for not having a previous character. (Hirohito
            Higashi)

454709baff
2018-02-11 20:15:44 +01:00
Justin M. Keyes
ff4a628081 test/old: restore test_alot_utf8.vim
Needed for later Vim patches.
Stub test_alot_latin.vim to avoid merge-conflict noise.

vim-patch:7.4.1700
vim-patch:7.4.1734
vim-patch:7.4.1740
vim-patch:7.4.2086
vim-patch:7.4.2223
vim-patch:8.0.0250
2018-02-11 20:15:43 +01:00
Justin M. Keyes
f389196a34
Merge #7960 'vim patches' 2018-02-11 19:59:37 +01:00
Justin M. Keyes
f26a4d484b lint 2018-02-11 19:03:29 +01:00
Justin M. Keyes
22173a64dd vim-patch:8.0.0479: remote_peek() is not tested
Problem:    remote_peek() is not tested.
Solution:   Add a test.

6caf606b14
2018-02-11 19:03:29 +01:00
Justin M. Keyes
fda2b1e906 vim-patch:8.0.0295: test_viml hangs
Problem:    test_viml hangs.
Solution:   Put resetting 'more' before sourcing the script.

7a073549a3
2018-02-11 19:03:29 +01:00
Justin M. Keyes
7a91177bc9 vim-patch:8.0.0293: some tests have a one or three second wait
Problem:    Some tests have a one or three second wait.
Solution:   Reset the 'showmode' option.  Use a test time of one to disable
            sleep after an error or warning message.

e5f2a075e3
2018-02-11 19:03:29 +01:00
Justin M. Keyes
840a2bb67d vim-patch:8.0.1370: channel test for callback is flaky
Problem:    Channel test for callback is flaky.
Solution:   Add the test to thelist of flaky tests.

1eca6f13d6
2018-02-11 19:03:28 +01:00
Justin M. Keyes
bef505c158 vim-patch:8.0.1365: when one channel test fails others fail as well
Problem:    When one channel test fails others fail as well.
Solution:   Stop the job after a failure.  Also add a couple of tests to the
            list of flaky tests.

24820691e6
2018-02-11 19:03:28 +01:00
Justin M. Keyes
44f275d518 vim-patch:8.0.1329: when a flaky test fails it also often fails the second time
Problem:    When a flaky test fails it also often fails the second time.
Solution:   Sleep a couple of seconds before the second try.

5505860152
2018-02-11 19:03:28 +01:00
Justin M. Keyes
1be0107168 vim-patch:8.0.0480: the remote_peek() test fails on MS-Windows
Problem:    The remote_peek() test fails on MS-Windows.
Solution:   Check for pending messages. Also report errors in the first run if
            a flaky test fails twice.

15e737f768
2018-02-11 19:03:28 +01:00
Justin M. Keyes
bcd8541863 vim-patch:7.4.1477
Problem:    Test_reltime is flaky, it depends on timing.
Solution:   When it fails run it a second time.

b5760a1ce5
2018-02-11 19:03:28 +01:00
Justin M. Keyes
8dd63dbe31 vim-patch:8.0.1262: terminal redir test is flaky
Problem:    Terminal redir test is flaky.
Solution:   Add it to the list of flaky tests.

7dd88c5133
2018-02-11 19:03:28 +01:00
Justin M. Keyes
e4952ee006 vim-patch:8.0.1219: terminal test is flaky
Problem:    Terminal test is flaky.
Solution:   Add test function to list of flaky tests.

f204e05ae9
2018-02-11 19:03:28 +01:00
Justin M. Keyes
f69e0d314f vim-patch:8.0.0975: using freed memory when setting 'backspace'
Problem:    Using freed memory when setting 'backspace'.
Solution:   When changing oldval also change origval.

edbc0d46cf
2018-02-11 19:03:28 +01:00
Justin M. Keyes
82a9051857 vim-patch:8.0.1188: autocmd test fails on MS-Windows
Problem:    Autocmd test fails on MS-Windows.
Solution:   Give the buffer a name and find the buffer to be wiped out by
            name.

1d68d9b2bd
2018-02-11 19:03:28 +01:00
Justin M. Keyes
5c05cd43cb test/old: skip test for unsupported 'cpoptions' flag 2018-02-11 19:03:28 +01:00
Justin M. Keyes
9bf9cc69c1 test/arglist_spec: update to Vim 8.0.0721 behavior 2018-02-11 19:03:28 +01:00
Justin M. Keyes
163b2b241b vim-patch:8.0.1200: tests switch the bell off twice
Problem:    Tests switch the bell off twice.
Solution:   Don't set 'belloff' in individual tests. (Christian Brabandt)

67418d97b4
2018-02-11 19:03:28 +01:00
Justin M. Keyes
66f5e5c7d7 test/old: TODO: skip Test_BufLeave_Wipe()
This test exposes a bug (present on current master).

Steps to reproduce:

  CC=clang make CMAKE_BUILD_TYPE=Debug CMAKE_EXTRA_FLAGS="-DCLANG_ASAN_UBSAN=ON"
  export ASAN_SYMBOLIZER_PATH=/usr/lib/llvm-5.0/bin/llvm-symbolizer
  TEST_FILE=test_autocmd.res make oldtest

==3668==ERROR: AddressSanitizer: heap-use-after-free on address 0x6260001411c8 at pc 0x000000a38a47 bp 0x7fff9982ee50 sp 0x7fff9982ee48
READ of size 4 at 0x6260001411c8 thread T0
    0 0xa38a46 in _typval_encode_nothing_convert_one_value /home/vagrant/neovim/build/../src/nvim/eval/typval_encode.c.h:320:15
    1 0xa340d5 in encode_vim_to_nothing /home/vagrant/neovim/build/../src/nvim/eval/typval_encode.c.h:830:9
    2 0xa0ad63 in tv_clear /home/vagrant/neovim/build/../src/nvim/eval/typval.c:2189:25
    3 0x85d584 in vars_clear_ext /home/vagrant/neovim/build/../src/nvim/eval.c:18894:9
    4 0x7efac9 in vars_clear /home/vagrant/neovim/build/../src/nvim/eval.c:18871:3
    5 0x7ef471 in eval_clear /home/vagrant/neovim/build/../src/nvim/eval.c:638:3
    6 0xf80a7c in free_all_mem /home/vagrant/neovim/build/../src/nvim/memory.c:676:3
    7 0x12789dc in mch_exit /home/vagrant/neovim/build/../src/nvim/os_unix.c:152:3
    8 0xe85039 in getout /home/vagrant/neovim/build/../src/nvim/main.c:671:3
    9 0xbb4496 in ex_quit_all /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:6051:5
    10 0xb4ba9c in do_one_cmd /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:2242:5
    11 0xb2dd03 in do_cmdline /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:609:20
    12 0x845302 in call_user_func /home/vagrant/neovim/build/../src/nvim/eval.c:21332:3
    13 0x81097b in call_func /home/vagrant/neovim/build/../src/nvim/eval.c:6358:11
    14 0x825778 in get_func_tv /home/vagrant/neovim/build/../src/nvim/eval.c:6120:11
    15 0x81e361 in ex_call /home/vagrant/neovim/build/../src/nvim/eval.c:2735:9
    16 0xb4ba9c in do_one_cmd /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:2242:5
    17 0xb2dd03 in do_cmdline /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:609:20
    18 0xb17fdd in do_source /home/vagrant/neovim/build/../src/nvim/ex_cmds2.c:2973:3
    19 0xb14630 in cmd_source /home/vagrant/neovim/build/../src/nvim/ex_cmds2.c:2718:14
    20 0xb14727 in ex_source /home/vagrant/neovim/build/../src/nvim/ex_cmds2.c:2699:3
    21 0xb4ba9c in do_one_cmd /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:2242:5
    22 0xb2dd03 in do_cmdline /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:609:20
    23 0xb34015 in do_cmdline_cmd /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:280:10
    24 0xe829d3 in exe_commands /home/vagrant/neovim/build/../src/nvim/main.c:1702:5
    25 0xe708bd in main /home/vagrant/neovim/build/../src/nvim/main.c:524:5
    26 0x7f0cd5b7e82f in __libc_start_main /build/glibc-Cl5G7W/glibc-2.23/csu/../csu/libc-start.c:291
    27 0x44d628 in _start (/home/vagrant/neovim/build/bin/nvim+0x44d628)

0x6260001411c8 is located 200 bytes inside of 10256-byte region [0x626000141100,0x626000143910)
freed by thread T0 here:
    0 0x50df60 in __interceptor_cfree.localalias.0 (/home/vagrant/neovim/build/bin/nvim+0x50df60)
    1 0xf7dbe4 in xfree /home/vagrant/neovim/build/../src/nvim/memory.c:133:3
    2 0x676577 in free_buffer /home/vagrant/neovim/build/../src/nvim/buffer.c:749:5
    3 0x66e15b in close_buffer /home/vagrant/neovim/build/../src/nvim/buffer.c:590:5
    4 0x67a835 in do_buffer /home/vagrant/neovim/build/../src/nvim/buffer.c:1216:9
    5 0x681a1d in do_bufdel /home/vagrant/neovim/build/../src/nvim/buffer.c:945:16
    6 0xb9cd72 in ex_bunload /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:4585:17
    7 0xb4ba9c in do_one_cmd /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:2242:5
    8 0xb2dd03 in do_cmdline /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:609:20
    9 0x845302 in call_user_func /home/vagrant/neovim/build/../src/nvim/eval.c:21332:3
    10 0x81097b in call_func /home/vagrant/neovim/build/../src/nvim/eval.c:6358:11
    11 0x825778 in get_func_tv /home/vagrant/neovim/build/../src/nvim/eval.c:6120:11
    12 0x81e361 in ex_call /home/vagrant/neovim/build/../src/nvim/eval.c:2735:9
    13 0xb4ba9c in do_one_cmd /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:2242:5
    14 0xb2dd03 in do_cmdline /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:609:20
    15 0x8646b1 in ex_execute /home/vagrant/neovim/build/../src/nvim/eval.c:19478:7
    16 0xb4ba9c in do_one_cmd /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:2242:5
    17 0xb2dd03 in do_cmdline /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:609:20
    18 0x845302 in call_user_func /home/vagrant/neovim/build/../src/nvim/eval.c:21332:3
    19 0x81097b in call_func /home/vagrant/neovim/build/../src/nvim/eval.c:6358:11
    20 0x825778 in get_func_tv /home/vagrant/neovim/build/../src/nvim/eval.c:6120:11
    21 0x81e361 in ex_call /home/vagrant/neovim/build/../src/nvim/eval.c:2735:9
    22 0xb4ba9c in do_one_cmd /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:2242:5
    23 0xb2dd03 in do_cmdline /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:609:20
    24 0xb17fdd in do_source /home/vagrant/neovim/build/../src/nvim/ex_cmds2.c:2973:3
    25 0xb14630 in cmd_source /home/vagrant/neovim/build/../src/nvim/ex_cmds2.c:2718:14
    26 0xb14727 in ex_source /home/vagrant/neovim/build/../src/nvim/ex_cmds2.c:2699:3
    27 0xb4ba9c in do_one_cmd /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:2242:5
    28 0xb2dd03 in do_cmdline /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:609:20
    29 0xb34015 in do_cmdline_cmd /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:280:10

previously allocated by thread T0 here:
    0 0x50e340 in calloc (/home/vagrant/neovim/build/bin/nvim+0x50e340)
    1 0xf7dc97 in xcalloc /home/vagrant/neovim/build/../src/nvim/memory.c:147:15
    2 0x67eb65 in buflist_new /home/vagrant/neovim/build/../src/nvim/buffer.c:1641:11
    3 0xa8fdcc in do_ecmd /home/vagrant/neovim/build/../src/nvim/ex_cmds.c:2221:13
    4 0x683b21 in empty_curbuf /home/vagrant/neovim/build/../src/nvim/buffer.c:1031:12
    5 0x67a098 in do_buffer /home/vagrant/neovim/build/../src/nvim/buffer.c:1196:14
    6 0x68173f in do_bufdel /home/vagrant/neovim/build/../src/nvim/buffer.c:927:11
    7 0xb9cd72 in ex_bunload /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:4585:17
    8 0xb4ba9c in do_one_cmd /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:2242:5
    9 0xb2dd03 in do_cmdline /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:609:20
    10 0x845302 in call_user_func /home/vagrant/neovim/build/../src/nvim/eval.c:21332:3
    11 0x81097b in call_func /home/vagrant/neovim/build/../src/nvim/eval.c:6358:11
    12 0x825778 in get_func_tv /home/vagrant/neovim/build/../src/nvim/eval.c:6120:11
    13 0x81e361 in ex_call /home/vagrant/neovim/build/../src/nvim/eval.c:2735:9
    14 0xb4ba9c in do_one_cmd /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:2242:5
    15 0xb2dd03 in do_cmdline /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:609:20
    16 0x8646b1 in ex_execute /home/vagrant/neovim/build/../src/nvim/eval.c:19478:7
    17 0xb4ba9c in do_one_cmd /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:2242:5
    18 0xb2dd03 in do_cmdline /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:609:20
    19 0x845302 in call_user_func /home/vagrant/neovim/build/../src/nvim/eval.c:21332:3
    20 0x81097b in call_func /home/vagrant/neovim/build/../src/nvim/eval.c:6358:11
    21 0x825778 in get_func_tv /home/vagrant/neovim/build/../src/nvim/eval.c:6120:11
    22 0x81e361 in ex_call /home/vagrant/neovim/build/../src/nvim/eval.c:2735:9
    23 0xb4ba9c in do_one_cmd /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:2242:5
    24 0xb2dd03 in do_cmdline /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:609:20
    25 0xb17fdd in do_source /home/vagrant/neovim/build/../src/nvim/ex_cmds2.c:2973:3
    26 0xb14630 in cmd_source /home/vagrant/neovim/build/../src/nvim/ex_cmds2.c:2718:14
    27 0xb14727 in ex_source /home/vagrant/neovim/build/../src/nvim/ex_cmds2.c:2699:3
    28 0xb4ba9c in do_one_cmd /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:2242:5
    29 0xb2dd03 in do_cmdline /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:609:20

SUMMARY: AddressSanitizer: heap-use-after-free /home/vagrant/neovim/build/../src/nvim/eval/typval_encode.c.h:320:15 in _typval_encode_nothing_convert_one_va
lue
Shadow bytes around the buggy address:
  0x0c4c800201e0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c4c800201f0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c4c80020200: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c4c80020210: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c4c80020220: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
=>0x0c4c80020230: fd fd fd fd fd fd fd fd fd[fd]fd fd fd fd fd fd
  0x0c4c80020240: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c4c80020250: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c4c80020260: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c4c80020270: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c4c80020280: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
Shadow byte legend (one shadow byte represents 8 application bytes):
  Addressable:           00
  Partially addressable: 01 02 03 04 05 06 07
  Heap left redzone:       fa
  Freed heap region:       fd
  Stack left redzone:      f1
  Stack mid redzone:       f2
  Stack right redzone:     f3
  Stack after return:      f5
  Stack use after scope:   f8
  Global redzone:          f9
  Global init order:       f6
  Poisoned by user:        f7
  Container overflow:      fc
  Array cookie:            ac
  Intra object redzone:    bb
  ASan internal:           fe
  Left alloca redzone:     ca
  Right alloca redzone:    cb
==3668==ABORTING
2018-02-11 19:03:27 +01:00
Justin M. Keyes
9af9ea6099 test/old: TODO: skip Test_virtual_replace()
This test exposes a bug (present on current master) in ins_char_bytes()
or somewhere earlier.

Steps to reproduce:

    inoremap <C-D> <Del>
    enew!
    exe "normal a\nabcdefghi\njk\tlmn\n    opq  rst\n\<C-D>uvwxyz"
    call cursor(1,1)
    exe "normal gR0\<C-D> 1\nA\nBCDEFGHIJ\n\tKL\nMNO\nPQR"

or run `TEST_FILE=test_visual.res make oldtest`.

Executing Test_virtual_replace()
2 buffers wiped out=================================================================
==31341==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x6020000c4f34 at pc 0x0000004f7971 bp 0x7ffdf87bb190 sp 0x7ffdf87ba940
WRITE of size 1 at 0x6020000c4f34 thread T0
    0 0x4f7970 in __asan_memmove (/home/vagrant/neovim/build/bin/nvim+0x4f7970)
    1 0xfde7a3 in ins_char_bytes /home/vagrant/neovim/build/../src/nvim/misc1.c:1488:3
    2 0xfdef41 in ins_char /home/vagrant/neovim/build/../src/nvim/misc1.c:1403:3
    3 0x79dd03 in insertchar /home/vagrant/neovim/build/../src/nvim/edit.c:5285:7
    4 0x7be70f in insert_special /home/vagrant/neovim/build/../src/nvim/edit.c:5071:5
    5 0x7bd94a in insert_handle_key /home/vagrant/neovim/build/../src/nvim/edit.c:1229:7
    6 0x76df14 in insert_execute /home/vagrant/neovim/build/../src/nvim/edit.c:764:10
    7 0x173cda9 in state_enter /home/vagrant/neovim/build/../src/nvim/state.c:67:26
    8 0x77601d in insert_enter /home/vagrant/neovim/build/../src/nvim/edit.c:458:5
    9 0x76986e in edit /home/vagrant/neovim/build/../src/nvim/edit.c:1327:3
    10 0x1118661 in invoke_edit /home/vagrant/neovim/build/../src/nvim/normal.c:7591:7
    11 0x10e60bc in nv_Replace /home/vagrant/neovim/build/../src/nvim/normal.c:6070:7
    12 0x10f235d in nv_g_cmd /home/vagrant/neovim/build/../src/nvim/normal.c:6541:5
    13 0x10c0eaa in normal_execute /home/vagrant/neovim/build/../src/nvim/normal.c:1136:3
    14 0x10b8444 in normal_cmd /home/vagrant/neovim/build/../src/nvim/normal.c:7995:9
    15 0xb80982 in exec_normal /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:8197:5
    16 0xb8065b in exec_normal_cmd /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:8180:3
    17 0xbb08df in ex_normal /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:8098:7
    18 0xb4ba9c in do_one_cmd /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:2242:5
    19 0xb2dd03 in do_cmdline /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:609:20
    20 0x8646b1 in ex_execute /home/vagrant/neovim/build/../src/nvim/eval.c:19478:7
    21 0xb4ba9c in do_one_cmd /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:2242:5
    22 0xb2dd03 in do_cmdline /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:609:20
    23 0x845302 in call_user_func /home/vagrant/neovim/build/../src/nvim/eval.c:21332:3
    24 0x81097b in call_func /home/vagrant/neovim/build/../src/nvim/eval.c:6358:11
    25 0x825778 in get_func_tv /home/vagrant/neovim/build/../src/nvim/eval.c:6120:11
    26 0x81e361 in ex_call /home/vagrant/neovim/build/../src/nvim/eval.c:2735:9
    27 0xb4ba9c in do_one_cmd /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:2242:5
    28 0xb2dd03 in do_cmdline /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:609:20
    29 0x8646b1 in ex_execute /home/vagrant/neovim/build/../src/nvim/eval.c:19478:7
    30 0xb4ba9c in do_one_cmd /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:2242:5
    31 0xb2dd03 in do_cmdline /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:609:20
    32 0x845302 in call_user_func /home/vagrant/neovim/build/../src/nvim/eval.c:21332:3
    33 0x81097b in call_func /home/vagrant/neovim/build/../src/nvim/eval.c:6358:11
    34 0x825778 in get_func_tv /home/vagrant/neovim/build/../src/nvim/eval.c:6120:11
    35 0x81e361 in ex_call /home/vagrant/neovim/build/../src/nvim/eval.c:2735:9
    36 0xb4ba9c in do_one_cmd /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:2242:5
    37 0xb2dd03 in do_cmdline /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:609:20
    38 0xb17fdd in do_source /home/vagrant/neovim/build/../src/nvim/ex_cmds2.c:2973:3
    39 0xb14630 in cmd_source /home/vagrant/neovim/build/../src/nvim/ex_cmds2.c:2718:14
    40 0xb14727 in ex_source /home/vagrant/neovim/build/../src/nvim/ex_cmds2.c:2699:3
    41 0xb4ba9c in do_one_cmd /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:2242:5
    42 0xb2dd03 in do_cmdline /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:609:20
    43 0xb34015 in do_cmdline_cmd /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:280:10
    44 0xe829d3 in exe_commands /home/vagrant/neovim/build/../src/nvim/main.c:1702:5
    45 0xe708bd in main /home/vagrant/neovim/build/../src/nvim/main.c:524:5
    46 0x7f0012a7782f in __libc_start_main /build/glibc-Cl5G7W/glibc-2.23/csu/../csu/libc-start.c:291
    47 0x44d628 in _start (/home/vagrant/neovim/build/bin/nvim+0x44d628)

0x6020000c4f34 is located 0 bytes to the right of 4-byte region [0x6020000c4f30,0x6020000c4f34)
allocated by thread T0 here:
    0 0x50e128 in malloc (/home/vagrant/neovim/build/bin/nvim+0x50e128)
    1 0xf7d871 in try_malloc /home/vagrant/neovim/build/../src/nvim/memory.c:87:15
    2 0xf7da99 in xmalloc /home/vagrant/neovim/build/../src/nvim/memory.c:121:15
    3 0xfde3c7 in ins_char_bytes /home/vagrant/neovim/build/../src/nvim/misc1.c:1473:18
    4 0xfdef41 in ins_char /home/vagrant/neovim/build/../src/nvim/misc1.c:1403:3
    5 0x79dd03 in insertchar /home/vagrant/neovim/build/../src/nvim/edit.c:5285:7
    6 0x7be70f in insert_special /home/vagrant/neovim/build/../src/nvim/edit.c:5071:5
    7 0x7bd94a in insert_handle_key /home/vagrant/neovim/build/../src/nvim/edit.c:1229:7
    8 0x76df14 in insert_execute /home/vagrant/neovim/build/../src/nvim/edit.c:764:10
    9 0x173cda9 in state_enter /home/vagrant/neovim/build/../src/nvim/state.c:67:26
    10 0x77601d in insert_enter /home/vagrant/neovim/build/../src/nvim/edit.c:458:5
    11 0x76986e in edit /home/vagrant/neovim/build/../src/nvim/edit.c:1327:3
    12 0x1118661 in invoke_edit /home/vagrant/neovim/build/../src/nvim/normal.c:7591:7
    13 0x10e60bc in nv_Replace /home/vagrant/neovim/build/../src/nvim/normal.c:6070:7
    14 0x10f235d in nv_g_cmd /home/vagrant/neovim/build/../src/nvim/normal.c:6541:5
    15 0x10c0eaa in normal_execute /home/vagrant/neovim/build/../src/nvim/normal.c:1136:3
    16 0x10b8444 in normal_cmd /home/vagrant/neovim/build/../src/nvim/normal.c:7995:9
    17 0xb80982 in exec_normal /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:8197:5
    18 0xb8065b in exec_normal_cmd /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:8180:3
    19 0xbb08df in ex_normal /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:8098:7
    20 0xb4ba9c in do_one_cmd /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:2242:5
    21 0xb2dd03 in do_cmdline /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:609:20
    22 0x8646b1 in ex_execute /home/vagrant/neovim/build/../src/nvim/eval.c:19478:7
    23 0xb4ba9c in do_one_cmd /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:2242:5
    24 0xb2dd03 in do_cmdline /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:609:20
    25 0x845302 in call_user_func /home/vagrant/neovim/build/../src/nvim/eval.c:21332:3
    26 0x81097b in call_func /home/vagrant/neovim/build/../src/nvim/eval.c:6358:11
    27 0x825778 in get_func_tv /home/vagrant/neovim/build/../src/nvim/eval.c:6120:11
    28 0x81e361 in ex_call /home/vagrant/neovim/build/../src/nvim/eval.c:2735:9
    29 0xb4ba9c in do_one_cmd /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:2242:5

SUMMARY: AddressSanitizer: heap-buffer-overflow (/home/vagrant/neovim/build/bin/nvim+0x4f7970) in __asan_memmove
Shadow bytes around the buggy address:
  0x0c0480010990: fa fa fd fa fa fa fd fa fa fa 00 fa fa fa 01 fa
  0x0c04800109a0: fa fa fd fa fa fa fd fa fa fa fd fa fa fa fd fa
  0x0c04800109b0: fa fa fd fa fa fa fd fa fa fa fd fa fa fa fd fa
  0x0c04800109c0: fa fa fd fa fa fa fd fa fa fa fd fa fa fa fd fa
  0x0c04800109d0: fa fa fd fa fa fa fd fa fa fa fd fa fa fa fd fa
=>0x0c04800109e0: fa fa 05 fa fa fa[04]fa fa fa fa fa fa fa fa fa
  0x0c04800109f0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c0480010a00: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c0480010a10: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c0480010a20: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c0480010a30: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
Shadow byte legend (one shadow byte represents 8 application bytes):
  Addressable:           00
  Partially addressable: 01 02 03 04 05 06 07
  Heap left redzone:       fa
  Freed heap region:       fd
  Stack left redzone:      f1
  Stack mid redzone:       f2
  Stack right redzone:     f3
  Stack after return:      f5
  Stack use after scope:   f8
  Global redzone:          f9
  Global init order:       f6
  Poisoned by user:        f7
  Container overflow:      fc
  Array cookie:            ac
  Intra object redzone:    bb
  ASan internal:           fe
  Left alloca redzone:     ca
  Right alloca redzone:    cb
==31341==ABORTING
2018-02-11 19:03:27 +01:00