summaryrefslogtreecommitdiffstats
path: root/src/network
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@theqtcompany.com>2016-01-26 18:33:02 +0000
committerThe Qt Project <gerrit-noreply@qt-project.org>2016-01-26 19:40:45 +0000
commitf3060312c89344744832e3352fe4f53efcb94c9b (patch)
treede69be5e25a1acd3207a8952376f634fe94fefcc /src/network
parentc29d3692d700f7ef6d5833242878b4ec6f81c928 (diff)
parenta15c3d086dafea83e4760f0b447be43d26b80697 (diff)
Merge "Merge remote-tracking branch 'origin/5.6' into dev" into refs/staging/dev
Diffstat (limited to 'src/network')
-rw-r--r--src/network/kernel/qnetworkinterface_unix.cpp36
-rw-r--r--src/network/socket/qnativesocketengine_winrt.cpp2
2 files changed, 19 insertions, 19 deletions
diff --git a/src/network/kernel/qnetworkinterface_unix.cpp b/src/network/kernel/qnetworkinterface_unix.cpp
index d04ea085c2..da53ccfe70 100644
--- a/src/network/kernel/qnetworkinterface_unix.cpp
+++ b/src/network/kernel/qnetworkinterface_unix.cpp
@@ -320,29 +320,29 @@ static QList<QNetworkInterfacePrivate *> interfaceListing()
}
#endif
- // Get the interface broadcast address
- QNetworkAddressEntry entry;
- if (iface->flags & QNetworkInterface::CanBroadcast) {
- if (qt_safe_ioctl(socket, SIOCGIFBRDADDR, &req) >= 0) {
- sockaddr *sa = &req.ifr_addr;
- if (sa->sa_family == AF_INET)
- entry.setBroadcast(addressFromSockaddr(sa));
- }
- }
-
// Get the address of the interface
+ QNetworkAddressEntry entry;
if (qt_safe_ioctl(socket, SIOCGIFADDR, &req) >= 0) {
sockaddr *sa = &req.ifr_addr;
entry.setIp(addressFromSockaddr(sa));
- }
- // Get the interface netmask
- if (qt_safe_ioctl(socket, SIOCGIFNETMASK, &req) >= 0) {
- sockaddr *sa = &req.ifr_addr;
- entry.setNetmask(addressFromSockaddr(sa));
- }
+ // Get the interface broadcast address
+ if (iface->flags & QNetworkInterface::CanBroadcast) {
+ if (qt_safe_ioctl(socket, SIOCGIFBRDADDR, &req) >= 0) {
+ sockaddr *sa = &req.ifr_addr;
+ if (sa->sa_family == AF_INET)
+ entry.setBroadcast(addressFromSockaddr(sa));
+ }
+ }
- iface->addressEntries << entry;
+ // Get the interface netmask
+ if (qt_safe_ioctl(socket, SIOCGIFNETMASK, &req) >= 0) {
+ sockaddr *sa = &req.ifr_addr;
+ entry.setNetmask(addressFromSockaddr(sa));
+ }
+
+ iface->addressEntries << entry;
+ }
}
::close(socket);
@@ -395,7 +395,7 @@ static QList<QNetworkInterfacePrivate *> createInterfaces(ifaddrs *rawList)
// - virtual interfaces with no HW address have no AF_PACKET
// - interface labels have no AF_PACKET, but shouldn't be shown as a new interface
for (ifaddrs *ptr = rawList; ptr; ptr = ptr->ifa_next) {
- if (ptr->ifa_addr && ptr->ifa_addr->sa_family != AF_PACKET) {
+ if (!ptr->ifa_addr || ptr->ifa_addr->sa_family != AF_PACKET) {
QString name = QString::fromLatin1(ptr->ifa_name);
if (seenInterfaces.contains(name))
continue;
diff --git a/src/network/socket/qnativesocketengine_winrt.cpp b/src/network/socket/qnativesocketengine_winrt.cpp
index 2a0995d4e7..68ee1e52d5 100644
--- a/src/network/socket/qnativesocketengine_winrt.cpp
+++ b/src/network/socket/qnativesocketengine_winrt.cpp
@@ -584,7 +584,7 @@ qint64 QNativeSocketEngine::readDatagram(char *data, qint64 maxlen, QIpPacketHea
} else {
readOrigin = datagram.data;
}
- strcpy(data, readOrigin);
+ memcpy(data, readOrigin, qMin(maxlen, qint64(datagram.data.length())));
return readOrigin.length();
}