I'm trying to figure out a way to fuzz >>read -e -d ""<<, without having the
fuzzer break due to the temporary files created by fc.
While doing this, I noticed the oddities described below.
#1
Hit `C-x C-e' twice. The value of PATH seems to be ignored for the second
line.
dualbus@debian:~$ PATH= read -e
bash: vim: No such file or directory
echo hi
hi
#2
Spurious `;'s are inserted into the history.
dualbus@debian:~$ history -c
dualbus@debian:~$ PATH= read -e
bash: vim: No such file or directory
echo hi
hi
dualbus@debian:~$ history
1 PATH= read -e; ;
2 echo hi
3 history
#3
Hit `C-x C-e' thrice. Also, the mapping of `\C-m' became `self-insert' instead
of `accept-line'.
dualbus@debian:~$ PATH= EDITOR=: read -e -d ''
PATH= EDITOR=: read -e -d '';
fc -e "${VISUAL:-${EDITOR:-$(command -v editor || echo emacs)}}"
: /tmp/bash-fc.IZAzmF
PATH= EDITOR=: read -e -d ''; ;
bash: syntax error near unexpected token `;'
fc -e "${VISUAL:-${EDITOR:-$(command -v editor || echo emacs)}}"
vim /tmp/bash-fc.35ePED
^M^M^C
dualbus@debian:~$ ^M^M^M^M^M^M^M^M
In relation to my fuzzing goal, it seems this is what I wanted:
dualbus@debian:~$ (enable -n fc; read -e -d '')
bash: fc: command not found
bash: fc: command not found
bash: fc: command not found
bash: fc: command not found
bash: fc: command not found
^C
--
Eduardo Bustamante
https://dualbus.me/