From e87596f5357407a11a97a5a037e47a2c26250ff4 Mon Sep 17 00:00:00 2001 From: Pepe44DEV Date: Wed, 27 May 2026 21:56:39 +0200 Subject: [PATCH] fix: stdout-leak in collect_all_interactive Subshell killte Module-Auswahl MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit collect_all_interactive wurde via <(...) in einer Subshell ausgeführt, deren stdout an mapfile gebunden war. ALLE Ausgaben (log_step, tui_confirm-Prompts, tui_info etc.) landeten im modules_to_run-Array → mapfile las Müllzeilen wie '━━━ [4/7] ... ━━━' als Modul-Pfade → module_run('━━━ ... ━━━') → 'not found'. Fix: exec 1>&2 zu Beginn der Subshell, nur die tatsächlichen Modul-Pfade werden über erhaltenen fd 3 (> original stdout) an mapfile gegeben. Prompt sagt jetzt auch welcher Step ('Run Modulbeschreibung?' statt 'Run this step?'). --- install.sh | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/install.sh b/install.sh index 7313a6e..7de3f31 100755 --- a/install.sh +++ b/install.sh @@ -162,6 +162,9 @@ collect_modules() { } collect_all_interactive() { + exec 3>&1 + exec 1>&2 + local modules=() if ((OMERON_FRESH_INSTALL)); then modules=("${FRESH_MODULES[@]}") @@ -196,7 +199,7 @@ collect_all_interactive() { fi fi - if tui_confirm "Run this step?"; then + if tui_confirm "${description:-$mod}?"; then module_order+=("$module_file") else log_info "Skipped" @@ -204,7 +207,8 @@ collect_all_interactive() { ((idx++)) done - printf '%s\n' "${module_order[@]}" + printf '%s\n' "${module_order[@]}" >&3 + exec 3>&- } show_banner() {