| Summary: | ssh-agent: fix unintended UNIX-domain socket removal | ||||||
|---|---|---|---|---|---|---|---|
| Product: | Portable OpenSSH | Reporter: | Dmitry V. Levin <ldv> | ||||
| Component: | ssh-agent | Assignee: | Assigned to nobody <unassigned-bugs> | ||||
| Status: | CLOSED FIXED | ||||||
| Severity: | normal | CC: | djm | ||||
| Priority: | P5 | ||||||
| Version: | 6.6p1 | ||||||
| Hardware: | All | ||||||
| OS: | All | ||||||
| Bug Depends on: | |||||||
| Bug Blocks: | 2226 | ||||||
| Attachments: |
|
||||||
patch applied - this will be in OpenSSH 6.7 - thanks! Close all bugs left open from 6.6 and 6.7 releases. |
Created attachment 2432 [details] proposed fix ssh-agent sometimes forks child processes. For example, ask_permission() may fork a child process to execute an askpass program. If it fails to execute, the child process exits using fatal(), which in turn calls cleanup_exit(), and the latter calls cleanup_socket(). As result, an error in child process causes unintended UNIX-domain socket removal. The fix is to record pid of the process that is responsible for socket cleanup, and skip this cleanup for other processes.