fix(local): exec lookup, worktree parsing and dirs bounds (0.2.1) #2
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/terminal-exec-and-dirs-hardening"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Security review of protocol 2 (RKD #1065 review, #968). This releases as 0.2.1.
gitnow comes only from absolute$PATHentries, and the resolved absolute path is what gets spawned. Before, the check skipped relative entries but portable-pty's own search used them, so with.or an empty entry inPATHa presetgitran the folder's own./git. A name containing/is a path from the tab's folder. The program's argv[0] is now the resolved path, because portable-pty cannot set it separately.--porcelain -z. A worktree path containing newlines could forge extra entries, for example listing/etc.-c core.fsmonitor=false -c core.hooksPath=/dev/null,GIT_CONFIG_NOSYSTEM=1, no prompt, no optional locks. The folders are the client's choice, so the repo may belong to anyone.dirsis bounded:dirsruns at a time per connectionrun_boundedkills git's whole process group at the deadline and no longer waits for EOF, so a background grandchild holding the pipe can't block the answerTests
fmt, clippy
-D warnings,cargo test --workspace(terminal suite passed 3 more times in a row). New tests for each fix, including a real-server exec test with a hostilePATH, a real newline worktree, the caps, single flight, and grandchild and timeout handling. 14 hand-applied mutations, all killed.https://claude.ai/code/session_01P4hUduqyzHTYckP7dX5fXV