Prevent buffer overflow when custom completions edit the commandline

This was introduced in a7ea7648c3
"Completion: maintain cursor position when there is no completion"
This commit is contained in:
Johannes Altmanninger
2019-11-01 13:21:49 +01:00
parent 9380b7ff39
commit 6702c84d15
4 changed files with 25 additions and 0 deletions

20
tests/complete.expect Normal file
View File

@@ -0,0 +1,20 @@
# vim: set filetype=expect:
spawn $fish
set sid $spawn_id
expect_prompt
send_line {
complete -c my_is -n 'test (count (commandline -opc)) = 1' -xa arg
complete -c my_is -n '__fish_seen_subcommand_from not' -xa '(
set -l cmd (commandline -opc) (commandline -ct)
set cmd (string join " " my_is $cmd[3..-1])" "
commandline --replace --current-process $cmd
complete -C"$cmd"
)'
}
send "my_is not \t"
send "still.alive"
expect -re {.*still.alive} {
} eof {
error "did fish crash?"
}