Browse Source

unbound_variable caught up

main
pvincent 2 weeks ago
parent
commit
17df8d5129
  1. 32
      poc

32
poc

@ -127,7 +127,6 @@ function on_pipe {
function dump_stderr { function dump_stderr {
miaou_debug '<stderr>' miaou_debug '<stderr>'
mapfile -t tmp_error <"$MIAOU_BASH_ERROR"
tty_ansi FG_LIGHTBLUE tty_ansi FG_LIGHTBLUE
for i in "${tmp_error[@]}"; do echo "$i"; done for i in "${tmp_error[@]}"; do echo "$i"; done
tty_ansi RESET tty_ansi RESET
@ -179,14 +178,39 @@ function dump_stacktrace {
} }
function on_exit { function on_exit {
local code
code="${1:-0}" code="${1:-0}"
mapfile -t tmp_error <"$MIAOU_BASH_ERROR"
2>&3 >&3 dump_stderr 2>&3 >&3 dump_stderr
# tmp_error already filled up through the dump_stderr call
if [[ $code -gt 0 && ${#tmp_error[@]} -gt 0 ]]; then if [[ $code -gt 0 && ${#tmp_error[@]} -gt 0 ]]; then
local last_error
local last_error regex
last_error="${tmp_error[-1]}" last_error="${tmp_error[-1]}"
miaou_debug "<on_exit exit=$code last_error='$last_error' />"
miaou_debug "<on_exit exit=$code last_error='$last_error'>"
if [[ $code -eq 1 ]]; then
regex='^(.*): line ([0-9]+): (.*): unbound variable$'
if [[ "$last_error" =~ $regex ]]; then
local source line payload
source="${BASH_REMATCH[1]}"
line="${BASH_REMATCH[2]}"
payload="${BASH_REMATCH[3]}"
miaou_debug "<unbound_variable source=${source} line=${line} payload=${payload}>"
failure_code=$code
failure_type='UNBOUND_VARIABLE'
failure_payload="${BASH_REMATCH[3]}"
error_source=("${BASH_SOURCE[@]}")
error_lineno=("${BASH_LINENO[@]}")
error_funcname=("${FUNCNAME[@]}")
unset 'error_source[0]' 'error_lineno[0]' 'error_funcname[0]'
unset 'error_source[-1]' 'error_lineno[-1]' 'error_funcname[-1]'
unset 'error_source[-1]' 'error_lineno[-1]' 'error_funcname[-1]'
error_source=("$source" "${error_source[@]}")
error_lineno=("$line" "${error_lineno[@]}")
error_funcname=("${error_funcname[@]}" '<main>')
fi
fi
miaou_debug "</on_exit>"
fi fi
if [[ -v failure_type ]]; then if [[ -v failure_type ]]; then

Loading…
Cancel
Save