diff options
| author | tranch <tranch.xiao@gmail.com> | 2026-07-29 17:05:41 +0800 |
|---|---|---|
| committer | tranch <tranch.xiao@gmail.com> | 2026-07-29 17:05:41 +0800 |
| commit | 40a5f50c69ec323c7c5d92f6357a9774017f67a1 (patch) | |
| tree | be4a8022ba6467528989105e0618ad55788949f5 /installer/patch-anaconda-webui.sh | |
| parent | db723765acf537ab469473b0a500eae31dc19455 (diff) | |
| download | AeroCore-OS-40a5f50c69ec323c7c5d92f6357a9774017f67a1.tar.gz AeroCore-OS-40a5f50c69ec323c7c5d92f6357a9774017f67a1.zip | |
Fix weak password crash in Live installer
Restore the Cockpit force-password behavior embedded in Fedora 43's
Anaconda WebUI bundle. Apply strict password policy through conf.d so
weak passwords remain a form validation error instead of aborting the
installer.
Diffstat (limited to 'installer/patch-anaconda-webui.sh')
| -rwxr-xr-x | installer/patch-anaconda-webui.sh | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/installer/patch-anaconda-webui.sh b/installer/patch-anaconda-webui.sh new file mode 100755 index 0000000..2f61516 --- /dev/null +++ b/installer/patch-anaconda-webui.sh @@ -0,0 +1,47 @@ +#!/usr/bin/env bash + +set -euo pipefail + +bundle="${1:-/usr/share/cockpit/anaconda-webui/index.js.gz}" +broken='n===0?r(new Error(X2("Password is too weak"))):o(' +fixed='n===0&&!e?r(new Error(X2("Password is too weak"))):o(' +fixed_sed='n===0\&\&!e?r(new Error(X2("Password is too weak"))):o(' + +if [[ ! -f "${bundle}" ]]; then + echo "Anaconda WebUI bundle not found: ${bundle}" >&2 + exit 1 +fi + +webui_js="$(mktemp)" +patched_js="$(mktemp)" +patched_bundle="$(mktemp)" +trap 'rm -f "${webui_js}" "${patched_js}" "${patched_bundle}"' EXIT + +gzip -dc "${bundle}" > "${webui_js}" + +fixed_count="$( (grep -oF "${fixed}" "${webui_js}" || true) | wc -l | tr -d ' ')" +if [[ "${fixed_count}" == "1" ]]; then + echo "Anaconda WebUI weak-password handling is already fixed" + exit 0 +fi + +broken_count="$( (grep -oF "${broken}" "${webui_js}" || true) | wc -l | tr -d ' ')" +if [[ "${broken_count}" != "1" ]]; then + echo "Unexpected Anaconda WebUI password helper; refusing an unsafe patch" >&2 + echo "Expected one weak-password rejection, found ${broken_count}" >&2 + exit 1 +fi + +sed "s|${broken}|${fixed_sed}|" "${webui_js}" > "${patched_js}" + +fixed_count="$( (grep -oF "${fixed}" "${patched_js}" || true) | wc -l | tr -d ' ')" +if [[ "${fixed_count}" != "1" ]] || grep -Fq "${broken}" "${patched_js}"; then + echo "Failed to patch Anaconda WebUI weak-password handling" >&2 + exit 1 +fi + +gzip -n -9 -c "${patched_js}" > "${patched_bundle}" +chmod 0644 "${patched_bundle}" +mv -f "${patched_bundle}" "${bundle}" + +echo "Patched Anaconda WebUI weak-password handling" |
