diff --git a/core/sems.cpp b/core/sems.cpp index 6f5d578f..ca1e8ae7 100644 --- a/core/sems.cpp +++ b/core/sems.cpp @@ -479,8 +479,10 @@ static void getInterfaceList(int sd, std::vector >& if_ for(int i=0; isin_addr))); + inet_ntoa(sa4.sin_addr))); } } #else // defined(BSD44SOCKETS) @@ -534,8 +536,10 @@ static string getLocalIP(const string& dev_name) if(ifr.ifr_addr.sa_family==PF_INET){ struct sockaddr_in* sa = (struct sockaddr_in*)&ifr.ifr_addr; + struct sockaddr_in sa4; + memcpy(&sa4, sa, sizeof(struct sockaddr_in)); if_list.push_back(make_pair((char*)ifr.ifr_name, - inet_ntoa(sa->sin_addr))); + inet_ntoa(sa4.sin_addr))); } }