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 (IsBsd()) {
__convert_bsd_to_sockaddr(&addr);
if (addrsize) {
if (IsBsd()) {
__convert_bsd_to_sockaddr(&addr);
}
__write_sockaddr(&addr, opt_out_srcaddr, opt_inout_srcaddrsize);
} else {
*opt_inout_srcaddrsize = 0;
}
__write_sockaddr(&addr, opt_out_srcaddr, opt_inout_srcaddrsize);
}
END_CANCELATION_POINT;