aboutsummaryrefslogtreecommitdiffstats
path: root/docs/RPC.md
diff options
context:
space:
mode:
authorblasty <blasty@local>2026-08-07 00:18:55 +0200
committerblasty <blasty@local>2026-08-07 00:18:55 +0200
commitc70acf6881c83d6de1f33022dc6210b93ed86f2e (patch)
tree9b3f613e9d5bf5d82218050bdda5831cc923e782 /docs/RPC.md
parentworker_client: tests, and stop resurrecting a closed worker (diff)
downloadida-tui-c70acf6881c83d6de1f33022dc6210b93ed86f2e.tar.gz
ida-tui-c70acf6881c83d6de1f33022dc6210b93ed86f2e.tar.xz
ida-tui-c70acf6881c83d6de1f33022dc6210b93ed86f2e.zip
launch: the sweep could delete the file it was asked to open
_sweep_locks removes the scratch IDA unpacks beside a .i64 (.id0/.id1/.id2/ .nam/.til) when an open fails, keyed on both the full name and the stem. It never touched the .i64, which is the dangerous one everybody thinks of. It did delete the input. '.til' is an unpacked-DB suffix AND the extension of an IDA type library, so 'ida-tui mylib.til' swept its own argument out of existence -- irreversibly, on a path that runs automatically. Same for anything named *.id0/*.id1/*.id2/*.nam. Now the sweep skips whatever it was asked to open, compared as an absolute path so a relative argument is covered too. tests/test_launch.py pins the whole contract: what it takes, what it must never take (the .i64, the input, the neighbours), and what it reports. Pure, in the --fast tier. It is the right shape of test for code whose failure mode is deleting the wrong file. Also: _load_args parsed the base with bare int(), which raises on the '0x8000000' string a project file writes. Unreachable from our own CLI (which int()s first) but the asymmetry with project._as_addr was a trap, so both go through the same parser now. 813 checks; --fast is 324 in 3.4s.
Diffstat (limited to 'docs/RPC.md')
0 files changed, 0 insertions, 0 deletions