aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--xbmc/linux/NetworkLinux.cpp7
1 files changed, 4 insertions, 3 deletions
diff --git a/xbmc/linux/NetworkLinux.cpp b/xbmc/linux/NetworkLinux.cpp
index a698b3c0c7..6f8d86e08f 100644
--- a/xbmc/linux/NetworkLinux.cpp
+++ b/xbmc/linux/NetworkLinux.cpp
@@ -86,6 +86,7 @@ bool CNetworkInterfaceLinux::IsEnabled()
bool CNetworkInterfaceLinux::IsConnected()
{
struct ifreq ifr;
+ int zero = 0;
memset(&ifr,0,sizeof(struct ifreq));
strcpy(ifr.ifr_name, m_interfaceName.c_str());
if (ioctl(m_network->GetSocket(), SIOCGIFFLAGS, &ifr) < 0)
@@ -98,7 +99,7 @@ bool CNetworkInterfaceLinux::IsConnected()
return false;
// return only interfaces which has ip address
- return iRunning && (*(int*)&ifr.ifr_addr.sa_data != 0);
+ return iRunning && (0 != memcmp(ifr.ifr_addr.sa_data+sizeof(short), &zero, sizeof(int)));
}
CStdString CNetworkInterfaceLinux::GetMacAddress()
@@ -134,7 +135,7 @@ CStdString CNetworkInterfaceLinux::GetCurrentIPAddress(void)
ifr.ifr_addr.sa_family = AF_INET;
if (ioctl(m_network->GetSocket(), SIOCGIFADDR, &ifr) >= 0)
{
- result = inet_ntoa(((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr);
+ result = inet_ntoa((*((struct sockaddr_in *)&ifr.ifr_addr)).sin_addr);
}
return result;
@@ -149,7 +150,7 @@ CStdString CNetworkInterfaceLinux::GetCurrentNetmask(void)
ifr.ifr_addr.sa_family = AF_INET;
if (ioctl(m_network->GetSocket(), SIOCGIFNETMASK, &ifr) >= 0)
{
- result = inet_ntoa(((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr);
+ result = inet_ntoa((*((struct sockaddr_in*)&ifr.ifr_addr)).sin_addr);
}
return result;