diff options
author | Craig Scott <craig.scott@csiro.au> | 2011-05-11 06:51:28 (GMT) |
---|---|---|
committer | Martin Petersson <martin.petersson@nokia.com> | 2011-05-11 13:03:41 (GMT) |
commit | 004ad12669ef696eeba70fd57d1eb0c67c806d1d (patch) | |
tree | 6e3f95cbf6869ebb48c24e0174dd2ac901f2860c /src | |
parent | 0c9cb9a34d6b472cb53bf1af4616af55b593b616 (diff) | |
download | Qt-004ad12669ef696eeba70fd57d1eb0c67c806d1d.zip Qt-004ad12669ef696eeba70fd57d1eb0c67c806d1d.tar.gz Qt-004ad12669ef696eeba70fd57d1eb0c67c806d1d.tar.bz2 |
Fix incorrect hardware address on systems without getifaddrs()
On unix systems for which QT_NO_GETIFADDRS is defined, the way that the
hardware address field is extracted from the result of a call to
qt_safe_ioctl() is incorrect. The address of the ifreq.ifr_addr struct
is taken rather than the appropriate member within that struct, sa_data,
resulting in a memory offset and subsequently the hardware address has
garbage in the first two of six fields. This commit modifies the code
to pass the sa_data member instead of the address of the struct as a
whole.
Task-number: QTBUG-19165
Merge-request: 2614
Reviewed-by: Martin Petersson
Diffstat (limited to 'src')
-rw-r--r-- | src/network/kernel/qnetworkinterface_unix.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/network/kernel/qnetworkinterface_unix.cpp b/src/network/kernel/qnetworkinterface_unix.cpp index 6098bde..7f251a7 100644 --- a/src/network/kernel/qnetworkinterface_unix.cpp +++ b/src/network/kernel/qnetworkinterface_unix.cpp @@ -219,7 +219,7 @@ static QNetworkInterfacePrivate *findInterface(int socket, QList<QNetworkInterfa #ifdef SIOCGIFHWADDR // Get the HW address if (qt_safe_ioctl(socket, SIOCGIFHWADDR, &req) >= 0) { - uchar *addr = (uchar *)&req.ifr_addr; + uchar *addr = (uchar *)req.ifr_addr.sa_data; iface->hardwareAddress = iface->makeHwAddress(6, addr); } #endif |