mirror of
https://github.com/debauchee/barrier.git
synced 2026-02-09 05:13:36 +08:00
Changed name-to-address translation to only use IPv4 addresses
and to only copy as much address as fits in sockaddr_in.sin_addr, in case hostent.h_length is wrong.
This commit is contained in:
@@ -611,11 +611,14 @@ CArchNetworkBSD::nameToAddr(const std::string& name)
|
||||
}
|
||||
|
||||
// copy over address (only IPv4 currently supported)
|
||||
addr->m_len = sizeof(struct sockaddr_in);
|
||||
inaddr.sin_family = info->h_addrtype;
|
||||
inaddr.sin_port = 0;
|
||||
memcpy(&inaddr.sin_addr, info->h_addr_list[0], info->h_length);
|
||||
memcpy(&addr->m_addr, &inaddr, addr->m_len);
|
||||
if (info->h_addrtype == AF_INET) {
|
||||
addr->m_len = sizeof(struct sockaddr_in);
|
||||
inaddr.sin_family = info->h_addrtype;
|
||||
inaddr.sin_port = 0;
|
||||
memcpy(&inaddr.sin_addr, info->h_addr_list[0],
|
||||
sizeof(inaddr.sin_addr));
|
||||
memcpy(&addr->m_addr, &inaddr, addr->m_len);
|
||||
}
|
||||
|
||||
// done with static buffer
|
||||
ARCH->unlockMutex(m_mutex);
|
||||
|
||||
@@ -618,11 +618,14 @@ CArchNetworkWinsock::nameToAddr(const std::string& name)
|
||||
}
|
||||
|
||||
// copy over address (only IPv4 currently supported)
|
||||
addr->m_len = sizeof(struct sockaddr_in);
|
||||
inaddr.sin_family = info->h_addrtype;
|
||||
inaddr.sin_port = 0;
|
||||
memcpy(&inaddr.sin_addr, info->h_addr_list[0], info->h_length);
|
||||
memcpy(&addr->m_addr, &inaddr, addr->m_len);
|
||||
if (info->h_addrtype == AF_INET) {
|
||||
addr->m_len = sizeof(struct sockaddr_in);
|
||||
inaddr.sin_family = info->h_addrtype;
|
||||
inaddr.sin_port = 0;
|
||||
memcpy(&inaddr.sin_addr, info->h_addr_list[0],
|
||||
sizeof(inaddr.sin_addr));
|
||||
memcpy(&addr->m_addr, &inaddr, addr->m_len);
|
||||
}
|
||||
}
|
||||
|
||||
return addr;
|
||||
|
||||
Reference in New Issue
Block a user