From: Bram Moolenaar Date: Wed, 8 May 2019 14:41:09 +0000 (+0200) Subject: patch 8.1.1296: crash when using invalid command line argument X-Git-Tag: v8.1.1296 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=27821260c0afaac85cb1c10627f1d7fbe48860ae;p=vim patch 8.1.1296: crash when using invalid command line argument Problem: Crash when using invalid command line argument. Solution: Check for options not being initialized. --- diff --git a/src/term.c b/src/term.c index bcc3dd387..462fe6f98 100644 --- a/src/term.c +++ b/src/term.c @@ -3014,13 +3014,13 @@ term_settitle(char_u *title) void term_push_title(int which) { - if ((which & SAVE_RESTORE_TITLE) && *T_CST != NUL) + if ((which & SAVE_RESTORE_TITLE) && T_CST != NULL && *T_CST != NUL) { OUT_STR(T_CST); out_flush(); } - if ((which & SAVE_RESTORE_ICON) && *T_SSI != NUL) + if ((which & SAVE_RESTORE_ICON) && T_SSI != NULL && *T_SSI != NUL) { OUT_STR(T_SSI); out_flush(); @@ -3033,13 +3033,13 @@ term_push_title(int which) void term_pop_title(int which) { - if ((which & SAVE_RESTORE_TITLE) && *T_CRT != NUL) + if ((which & SAVE_RESTORE_TITLE) && T_CRT != NULL && *T_CRT != NUL) { OUT_STR(T_CRT); out_flush(); } - if ((which & SAVE_RESTORE_ICON) && *T_SRI != NUL) + if ((which & SAVE_RESTORE_ICON) && T_SRI != NULL && *T_SRI != NUL) { OUT_STR(T_SRI); out_flush(); diff --git a/src/testdir/test_startup.vim b/src/testdir/test_startup.vim index dec485b13..a45130f7a 100644 --- a/src/testdir/test_startup.vim +++ b/src/testdir/test_startup.vim @@ -408,12 +408,11 @@ func Test_invalid_args() endfor if has('clientserver') - " FIXME: need to add --servername to this list - " but it causes vim-8.1.1282 to crash! for opt in ['--remote', '--remote-send', '--remote-silent', '--remote-expr', \ '--remote-tab', '--remote-tab-wait', \ '--remote-tab-wait-silent', '--remote-tab-silent', \ '--remote-wait', '--remote-wait-silent', + \ '--servername', \ ] let out = split(system(GetVimCommand() .. ' ' .. opt), "\n") call assert_equal(1, v:shell_error) @@ -423,14 +422,13 @@ func Test_invalid_args() endfor endif - " FIXME: commented out as this causes vim-8.1.1282 to crash! - "if has('clipboard') - " let out = split(system(GetVimCommand() .. ' --display'), "\n") - " call assert_equal(1, v:shell_error) - " call assert_match('^VIM - Vi IMproved .* (.*)$', out[0]) - " call assert_equal('Argument missing after: "--display"', out[1]) - " call assert_equal('More info with: "vim -h"', out[2]) - "endif + if has('clipboard') + let out = split(system(GetVimCommand() .. ' --display'), "\n") + call assert_equal(1, v:shell_error) + call assert_match('^VIM - Vi IMproved .* (.*)$', out[0]) + call assert_equal('Argument missing after: "--display"', out[1]) + call assert_equal('More info with: "vim -h"', out[2]) + endif let out = split(system(GetVimCommand() .. ' -ix'), "\n") call assert_equal(1, v:shell_error) @@ -463,16 +461,15 @@ func Test_invalid_args() call assert_equal('More info with: "vim -h"', out[2]) endfor - " FIXME: commented out as this causes vim-8.1.1282 to crash! - "if has('gui_gtk') - " for opt in ['--socketid x', '--socketid 0xg'] - " let out = split(system(GetVimCommand() .. ' ' .. opt), "\n") - " call assert_equal(1, v:shell_error) - " call assert_match('^VIM - Vi IMproved .* (.*)$', out[0]) - " call assert_equal('Invalid argument for: "--socketid"', out[1]) - " call assert_equal('More info with: "vim -h"', out[2]) - " endfor - "endif + if has('gui_gtk') + for opt in ['--socketid x', '--socketid 0xg'] + let out = split(system(GetVimCommand() .. ' ' .. opt), "\n") + call assert_equal(1, v:shell_error) + call assert_match('^VIM - Vi IMproved .* (.*)$', out[0]) + call assert_equal('Invalid argument for: "--socketid"', out[1]) + call assert_equal('More info with: "vim -h"', out[2]) + endfor + endif endfunc func Test_file_args() diff --git a/src/version.c b/src/version.c index 32066b4f6..8e6b404f8 100644 --- a/src/version.c +++ b/src/version.c @@ -767,6 +767,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1296, /**/ 1295, /**/