stack-release: --no-sso drops --send in one place, send_for_target (row 273)

This commit is contained in:
jason.woltje committed 2026-10-21 20:20:41 -05:00
1 parent 7dc538d90a
commit 3730567146
2 files changed
+8 -6

No files matched your search

+4 -3
View File
@@ -13,8 +13,9 @@ Only `scripts/stack-release.sh` and its two node test files.
already holds it. `check_target` lets it name the pointer's copy only when the pointer holds no `--send`,
so a second `--send` on the same copy refuses `already-active`.
- `activate --no-sso` refuses `sso-not-on` when the pointer holds no `--sso`. Otherwise it takes the
Console flags from a rollback set (below), drops `--send` from them and from the run, and keeps the
pointer's tester flags. The plan prints `sso: off; Console flags from <set>/<file>; restores <flags>`
Console flags from a rollback set (below) and keeps the pointer's tester flags. `send_for_target`
drops `--send`, whether it came from the set or the pointer. It is the only place that does, so one
mutant there (M3) shows the drop is tested. The plan prints `sso: off; Console flags from <set>/<file>; restores <flags>`
and a send line, `send: dropped; --no-sso drops --send (F39)` or `send: off; --no-sso was given and the
pointer holds no --send`. The steps log gets `drop --send; --no-sso was given` and
`turn off --sso; the Console flags come from <set>/<file>`.
@@ -71,7 +72,7 @@ live in the node tests and test-release.sh runs unchanged.
| # | Change | Expected killer |
|---|---|---|
| M1 | `set_flags` skips the SHA256SUMS comparison | T4 tampered set |
| M1 | `set_flags` skips the SHA256SUMS comparison when `--no-sso` is given | T4 tampered set |
| M2 | `no_sso_base` skips the `sso-not-on` refusal | T4 `sso-not-on` |
| M3 | the `--no-sso` branch of `send_for_target` keeps `--send` | T3 |
| M4 | `--send` skips the `send-needs-sso` refusal | T2 |
+4 -3
View File
@@ -955,16 +955,17 @@ no_sso_base() {
check_refuse sso-off-flags "the Console flags from before --sso cannot be read: $why"
return 0
fi
# A --send in the set stays here: send_for_target is the one place that drops it, so the
# restores list leaves it out.
BASE_CONSOLE=()
for ((i = 0; i < ${#SERVE_FLAGS[@]}; i++)); do
case "${SERVE_FLAGS[i]}" in
--send) ;;
--tester-port) i=$((i + 1)) ;;
--tester-socket) ;;
*) BASE_CONSOLE+=("${SERVE_FLAGS[i]}") ;;
*) BASE_CONSOLE+=("${SERVE_FLAGS[i]}")
[ "${SERVE_FLAGS[i]}" = --send ] || restored+="${restored:+ }${SERVE_FLAGS[i]}" ;;
esac
done
restored="${BASE_CONSOLE[*]}"
for ((i = 0; i < ${#P_CONSOLE[@]}; i++)); do
case "${P_CONSOLE[i]}" in
--tester-port) i=$((i + 1)); BASE_CONSOLE+=(--tester-port "${P_CONSOLE[i]:-}") ;;