| Summary: | persistent mux master should chdir away from the current directory | ||||||
|---|---|---|---|---|---|---|---|
| Product: | Portable OpenSSH | Reporter: | Bert Wesarg <Bert.Wesarg> | ||||
| Component: | ssh | Assignee: | Assigned to nobody <unassigned-bugs> | ||||
| Status: | NEW --- | ||||||
| Severity: | normal | CC: | calestyo, chrysn, djm, simon | ||||
| Priority: | P2 | ||||||
| Version: | 5.8p2 | ||||||
| Hardware: | All | ||||||
| OS: | All | ||||||
| Attachments: |
|
||||||
|
Description
Bert Wesarg
2011-05-06 22:28:57 AEST
Created attachment 2049 [details]
/home/djm/bz1902.diff
chdir to dirname(ControlPath)
Unfortunately, I just thought of an annoying wrinkle: this will break any relative paths to known hosts files. Perhaps these should be run through derelativise_path() first? looking to report this myself, i first found bug #1988; the change that fixed that back then ("djm@cvs.openbsd.org 2013/07/25 00:29:10") introduced a daemon(nochdir=1) call. using daemon(0, 1) instead of daemon(1, 1) at the end of control_persist_detach solves this bug for me. it is a little hard for me to test continuously, though -- the change works when i building from source, not when building the debian package, but those issues don't belong here. for reference, my test setup is $ killall ssh $ mkdir a # mount -ttmpfs tmp a $ cd a $ ssh -F /dev/null -oControlPersist=yes -oControlMaster=auto -oControlPath=/tmp/x.sock somehost somehost$ exit $ cd .. # umount a which works (ie. umount returns 0) iff i run the using_daemon(0,1) version. i did no tests with respect to relative paths -- what would a setup look like where relative paths could fail? |