recvfrom: don't convert address if addrsize is 0

Fixes malformed address being returned for recvfrom on connection oriented sockets.
This commit is contained in:
Gavin Hayes 2024-04-22 22:56:43 -04:00
parent 01267ea0f5
commit 9ee5b5a2f0

View file

@ -84,10 +84,14 @@ ssize_t recvfrom(int fd, void *buf, size_t size, int flags,
} }
if (rc != -1) { if (rc != -1) {
if (addrsize) {
if (IsBsd()) { if (IsBsd()) {
__convert_bsd_to_sockaddr(&addr); __convert_bsd_to_sockaddr(&addr);
} }
__write_sockaddr(&addr, opt_out_srcaddr, opt_inout_srcaddrsize); __write_sockaddr(&addr, opt_out_srcaddr, opt_inout_srcaddrsize);
} else {
*opt_inout_srcaddrsize = 0;
}
} }
END_CANCELATION_POINT; END_CANCELATION_POINT;