This is the record of an abcd-managed repository

abcdBetav0.16.2 · 2026-11-06

Development record

rm-rf-root-or-home is bypassed by an IFS named through an expansion: with I=I, `export ${I}FS=x; rm -rf ${U:-x/x}` allows and hands rm "" and / on bash 3.2, /bin/sh, dash and bash 5.3, and so do `eval "I${F:-F}S=x"`, `declare|typeset|readonly|local ${I}FS=x`, `read -r ${I}FS`, `printf -v ${I}FS x` and `: $((IFS=1))`. namesIFS matched the literal text IFS only, and the tokenizer steps over arithmetic.

issueresolvedmajoriss-2609300651115290

rm-rf-root-or-home is bypassed by an IFS named through an expansion: with I=I, export ${I}FS=x; rm -rf ${U:-x/x} allows and hands rm "" and / on bash 3.2, /bin/sh, dash and bash 5.3, and so do eval "I${F:-F}S=x", declare|typeset|readonly|local ${I}FS=x, read -r ${I}FS, printf -v ${I}FS x and : $((IFS=1)). namesIFS matched the literal text IFS only, and the tokenizer steps over arithmetic.

Grounds

  • pursued: every form the review named, and the arithmetic, let, getopts, mapfile and wait -p siblings, now blocks while IFS= read -r f and IFS=, read -ra arr with a quoted operand stay allowed; a name built some way the guard still does not read (a sourced file, a nameref set before the line) would show it wrong, and 17-guard.md names those as residuals.

Frontmatter

idiss-2609300651115290
typeissue
lifecycleresolved
severitymajor

mentions2