Development record
The guard allows IFS=x; rm -rf ${U:-x/x} (and ${U:+x/x}), which every shell splits on the assigned IFS into "" and /, so rm deletes the root; spellWord splits an unquoted default or alternative word on whitespace only (review-guardSet MAJOR-2). IFS=Uv; rm -rf $HOME/x splits the home into / the same way.
issueresolvedmajoriss-2609300057318410
The guard allows IFS=x; rm -rf ${U:-x/x} (and ${U:+x/x}), which every shell splits on the assigned IFS into "" and /, so rm deletes the root; spellWord splits an unquoted default or alternative word on whitespace only (review-guardSet MAJOR-2). IFS=Uv; rm -rf $HOME/x splits the home into / the same way.
Grounds
- pursued: IFS=x; rm -rf ${U:-x/x} and IFS=Uv; rm -rf $HOME/x block, eval layers included; an IFS set through a name the guard cannot read (declare $(echo I)FS=x) stays the documented residual, and a spelled IFS assignment that still allows would show it wrong
Frontmatter
| id | iss-2609300057318410 |
|---|---|
| type | issue |
| lifecycle | resolved |
| severity | major |
.abcd/work/issues/resolved/iss-2609300057318410-the-guard-allows-ifs-x-rm-rf-u-x-x-and-u.md
open on GitHub ↗ · commit history ↗