diff options
author | 1999-10-14 08:18:49 +0000 | |
---|---|---|
committer | 1999-10-14 08:18:49 +0000 | |
commit | b8502fcbfaae718620e5a5593d4e70b08c067daf (patch) | |
tree | fb0f4de8c8ff89f56f0ce40f2673a601d66a8988 /usr.bin/ssh/ssh-agent.1 | |
parent | read disklabels only from CDs that have a data track, spoofed labels from (diff) | |
download | wireguard-openbsd-b8502fcbfaae718620e5a5593d4e70b08c067daf.tar.xz wireguard-openbsd-b8502fcbfaae718620e5a5593d4e70b08c067daf.zip |
Fix for PR 871.
This fix is taken from BSD/OS (the file in question being BSD licensed).
It continues to remove a datagram from a socket receive buffer even if there is
an error on the copy-out, so as to leave the buffer in a reasonable state.
Before, the kernel would stop in mid-receive if the copy-out failed, and the
buffer's structural requirements would be violated (since the start of a
datagram must be an address iff ).
Note that if the user provides any invalid addresses as arguments to a
recvmsg(), the datagram at the front of the buffer will be discarded. The more
correct behavior would be not to remove this datagram if the arguments are
invalid. Implementing this behavior requires a lot of significant changes, and
socket receives are a critical path.
Also included are two simple and fairly obvious fixes from the same source.
If non-blocking I/O is set, it makes sure the receieve is non-blocking. It also
fixes a slightly over-aggressive optimization.
Diffstat (limited to 'usr.bin/ssh/ssh-agent.1')
0 files changed, 0 insertions, 0 deletions