You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
It is critical that EOF from the service gets propagated to
the stdout of qrexec-client-vm or qrexec-client. Otherwise, the caller
will not recognize that EOF has happened and may wait forever for data
that will never arrive. In QubesOS/qubes-issues#9169, this caused curl
to hang when reading a plaintext HTTP/1.0 response from tinyproxy, which
relies on EOF to delimit the response.
The bug will trigger iff all of the following conditions are met:
1. The remote side must close the writing side of the connection, either
by closing or shutting down a socket.
2. If the remote service is executable, it must _not_ exit.
3. qrexec-client-vm or qrexec-client must _not_ get EOF on stdin.
4. Either the remote side does not close its stdin, or the local side
does not continue to write data.
5. The same file description is used for both stdin and stdout of the
local qrexec-client or qrexec-client-vm process.
6. qrexec-client or qrexec-client-vm connect the stdin and stdout of the
remote process to their own stdin and stdout, not the stdin and
stdout of a locally spawned command.
To fix this bug, add flags to qrexec-client and qrexec-client-vm that
cause the socket passed as file descriptor 0 to be used for both stdin
and stdout.
Fixes: QubesOS/qubes-issues#9169
0 commit comments