mirror of
https://git.eden-emu.dev/eden-emu/eden
synced 2026-06-27 18:36:35 +02:00
beware of link_ntoa_r()
This commit is contained in:
parent
a3a8b26669
commit
fc5df50fba
1 changed files with 5 additions and 1 deletions
|
|
@ -205,11 +205,15 @@ std::vector<Network::NetworkInterface> GetAvailableNetworkInterfaces() {
|
||||||
if (msglen == 0 || msglen < SA_SIZE(sa))
|
if (msglen == 0 || msglen < SA_SIZE(sa))
|
||||||
break;
|
break;
|
||||||
if (i == RTA_NETMASK && sa->sa_family == AF_LINK) {
|
if (i == RTA_NETMASK && sa->sa_family == AF_LINK) {
|
||||||
size_t namelen = 0;
|
|
||||||
struct sockaddr_dl const* sdl = reinterpret_cast<struct sockaddr_dl const*>(sa);
|
struct sockaddr_dl const* sdl = reinterpret_cast<struct sockaddr_dl const*>(sa);
|
||||||
|
#if defined(__APPLE__) || (defined(__FreeBSD__) && __FreeBSD__ < 15)
|
||||||
|
iface.name = std::string{::link_ntoa(sdl)};
|
||||||
|
#else
|
||||||
|
size_t namelen = 0;
|
||||||
::link_ntoa_r(sdl, nullptr, &namelen);
|
::link_ntoa_r(sdl, nullptr, &namelen);
|
||||||
iface.name = std::string(namelen, ' ');
|
iface.name = std::string(namelen, ' ');
|
||||||
::link_ntoa_r(sdl, iface.name.data(), &namelen);
|
::link_ntoa_r(sdl, iface.name.data(), &namelen);
|
||||||
|
#endif
|
||||||
std::memcpy(&iface.ip_address, sa, sizeof(struct sockaddr_in));
|
std::memcpy(&iface.ip_address, sa, sizeof(struct sockaddr_in));
|
||||||
}
|
}
|
||||||
msglen -= SA_SIZE(sa);
|
msglen -= SA_SIZE(sa);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue