NetworkManager/src
Beniamino Galvani 84d213f7c5 platform: avoid unaligned access to link stats on 64bit architectures
The undefined behavior sanitizer complains with:

platform/nm-linux-platform.c:1482:31: runtime error: member access within misaligned address 0x61a000016fac for type 'struct rtnl_link_stats64', which requires 8 byte alignment
0x61a000016fac: note: pointer points here
  bc 00 17 00 bf 05 00 00  00 00 00 00 bf 05 00 00  00 00 00 00 b5 68 02 00  00 00 00 00 b5 68 02 00
              ^
platform/nm-linux-platform.c:1483:29: runtime error: member access within misaligned address 0x61a000016fac for type 'struct rtnl_link_stats64', which requires 8 byte alignment
0x61a000016fac: note: pointer points here
  bc 00 17 00 bf 05 00 00  00 00 00 00 bf 05 00 00  00 00 00 00 b5 68 02 00  00 00 00 00 b5 68 02 00
              ^
platform/nm-linux-platform.c:1484:31: runtime error: member access within misaligned address 0x61a000016fac for type 'struct rtnl_link_stats64', which requires 8 byte alignment
0x61a000016fac: note: pointer points here
  bc 00 17 00 bf 05 00 00  00 00 00 00 bf 05 00 00  00 00 00 00 b5 68 02 00  00 00 00 00 b5 68 02 00
              ^
platform/nm-linux-platform.c:1485:29: runtime error: member access within misaligned address 0x61a000016fac for type 'struct rtnl_link_stats64', which requires 8 byte alignment
0x61a000016fac: note: pointer points here
  bc 00 17 00 bf 05 00 00  00 00 00 00 bf 05 00 00  00 00 00 00 b5 68 02 00  00 00 00 00 b5 68 02 00
              ^

That's because the pointer returned by nla_data() is only
32bit-aligned and using it to access structure members can cause
issues on some 64bit architectures.

Use the unaligned_read_ne64() macro to access the structure members.

https://bugzilla.gnome.org/show_bug.cgi?id=772605
(cherry picked from commit 89bcf50f61)
2016-10-14 11:23:51 +02:00
..
devices wwan/ppp: send explicit port speed to pppd when port speed is zero (rh #1281731) 2016-10-07 14:54:50 -05:00
dhcp-manager dhcp: call synchronous Notify D-Bus method from nm-dhcp-helper 2016-09-08 00:26:14 +02:00
dns-manager core: use _NM_GET_PRIVATE() macros 2016-09-08 00:26:14 +02:00
dnsmasq-manager all: cleanup includes in header files 2016-08-17 19:51:17 +02:00
platform platform: avoid unaligned access to link stats on 64bit architectures 2016-10-14 11:23:51 +02:00
ppp-manager wwan/ppp: send explicit port speed to pppd when port speed is zero (rh #1281731) 2016-10-07 14:54:50 -05:00
rdisc core: use _NM_GET_PRIVATE() macros 2016-09-08 00:26:14 +02:00
settings tests/ifupdown: add missing source-stanza files reference from makefile 2016-09-13 16:55:10 +02:00
supplicant-manager supplicant: fix cancellation of interface association 2016-10-14 10:07:58 +02:00
systemd systemd: hide "nm-sd-adapt.h" and expose required internal API in "nm-sd.h" 2016-08-12 09:38:51 +02:00
tests all: cleanup includes in header files 2016-08-17 19:51:17 +02:00
vpn-manager core: use _NM_GET_PRIVATE() macros 2016-09-08 00:26:14 +02:00
main-utils.c build: avoid compiler warnings about non-constant format strings (-Wformat-nonliteral) 2016-06-05 12:22:01 +02:00
main-utils.h all: cleanup includes in header files 2016-08-17 19:51:17 +02:00
main.c config: refactor change-flags to be a cause/reason which triggered the change 2016-06-01 19:06:34 +02:00
Makefile.am dhcp: add new header "nm-dhcp-helper-api.h" 2016-09-08 00:26:14 +02:00
NetworkManager.ver build: export _IO_stdin_used symbol in NetworkManager.ver 2016-08-28 16:56:25 +02:00
NetworkManagerUtils.c device: fix nm_utils_match_connection() for NMSettingInfiniband:mac-address 2016-09-22 16:49:15 +02:00
NetworkManagerUtils.h utils: inject platform into nm_utils_complete_generic() 2016-03-15 12:56:58 +01:00
nm-activation-request.c act-request: queue failing the slave when master fails 2016-08-17 15:36:05 +02:00
nm-activation-request.h all: cleanup includes in header files 2016-08-17 19:51:17 +02:00
nm-active-connection.c core: use define for signal name in nm_active_connection_set_device() 2016-08-22 16:25:33 +02:00
nm-active-connection.h active-connection: add parent active connection tracking 2016-03-26 11:31:18 +01:00
nm-audit-manager.c checkpoint: add audit support 2016-08-17 14:55:34 +02:00
nm-audit-manager.h all: cleanup includes in header files 2016-08-17 19:51:17 +02:00
nm-auth-manager.c auth: downgrade g_assert() to nm_assert() 2016-04-05 10:39:20 +02:00
nm-auth-manager.h all: cleanup includes in header files 2016-08-17 19:51:17 +02:00
nm-auth-subject.c core: use _NM_GET_PRIVATE() macros 2016-09-08 00:26:14 +02:00
nm-auth-subject.h auth: embed private data NMAuthSubjectPrivate in NMAuthSubject struct 2016-05-12 10:24:36 +02:00
nm-auth-utils.c core: fix builds without polkit support 2016-08-17 11:28:55 +02:00
nm-auth-utils.h all: move NM_AUTH_PERMISSION_* defines to "nm-common-macros.h" header 2016-06-01 19:06:35 +02:00
nm-bus-manager.c dhcp: call synchronous Notify D-Bus method from nm-dhcp-helper 2016-09-08 00:26:14 +02:00
nm-bus-manager.h core: check valid uid for D-Bus load_connection(s)/set_logging calls 2016-08-23 11:24:19 +02:00
nm-checkpoint-manager.c checkpoint: add create, rollback and destroy D-Bus API 2016-08-17 14:55:34 +02:00
nm-checkpoint-manager.h checkpoint: add create, rollback and destroy D-Bus API 2016-08-17 14:55:34 +02:00
nm-checkpoint.c core: use _NM_GET_PRIVATE() macros 2016-09-08 00:26:14 +02:00
nm-checkpoint.h checkpoint: add create, rollback and destroy D-Bus API 2016-08-17 14:55:34 +02:00
nm-config-data.c config: make "ignore-carrier" a per-device configuration option 2016-06-30 08:27:17 +02:00
nm-config-data.h config: add support for per-device configuration to NetworkManager.conf 2016-06-30 08:07:35 +02:00
nm-config.c device: let device specs match on permanent MAC address 2016-06-30 08:29:55 +02:00
nm-config.h config: make "ignore-carrier" a per-device configuration option 2016-06-30 08:27:17 +02:00
nm-connectivity.c nm-dispatcher: Added new 'connectivity-state' parameter to private D-Bus API 2016-07-28 22:22:14 +02:00
nm-connectivity.h all: cleanup includes in header files 2016-08-17 19:51:17 +02:00
nm-core-utils.c all: make MAC address randomization algorithm configurable 2016-06-30 08:32:50 +02:00
nm-core-utils.h all: cleanup includes in header files 2016-08-17 19:51:17 +02:00
nm-dcb.c all: cleanup includes and let "nm-default.h" include "config.h" 2016-02-19 17:53:25 +01:00
nm-dcb.h all: cleanup includes in header files 2016-08-17 19:51:17 +02:00
nm-default-route-manager.c vpn,dns: for interface-less VPN connections get the ip_iface from the parent device 2016-05-27 12:54:55 +02:00
nm-default-route-manager.h all: cleanup includes in header files 2016-08-17 19:51:17 +02:00
nm-dhcp4-config.c all: cleanup includes and let "nm-default.h" include "config.h" 2016-02-19 17:53:25 +01:00
nm-dhcp4-config.h core: port NMDhcp4Config/NMDhcp6Config to GVariant 2015-07-24 13:25:47 -04:00
nm-dhcp6-config.c all: cleanup includes and let "nm-default.h" include "config.h" 2016-02-19 17:53:25 +01:00
nm-dhcp6-config.h core: port NMDhcp4Config/NMDhcp6Config to GVariant 2015-07-24 13:25:47 -04:00
nm-dispatcher.c nm-dispatcher: Added new 'connectivity-state' parameter to private D-Bus API 2016-07-28 22:22:14 +02:00
nm-dispatcher.h all: cleanup includes in header files 2016-08-17 19:51:17 +02:00
nm-exported-object.c exported-object: use _NMLOG2() macro for logging property-changed signal 2016-09-02 20:17:42 +02:00
nm-exported-object.h build: cleanup src/Makefile.am 2016-08-11 11:54:18 +02:00
nm-firewall-manager.c core: use defines for signal names in NMDnsManager and NMFirewallManager 2016-04-04 16:48:10 +02:00
nm-firewall-manager.h all: cleanup includes in header files 2016-08-17 19:51:17 +02:00
nm-iface-helper.c dbus: fix emitting D-Bus NetworkManager's old-style PropertiesChange signal 2016-09-02 20:17:42 +02:00
nm-ip4-config.c core: use _NM_GET_PRIVATE() macros 2016-09-08 00:26:14 +02:00
nm-ip4-config.h core: add DNS priority to NMIP4Config 2016-05-12 17:13:50 +02:00
nm-ip6-config.c core: use _NM_GET_PRIVATE() macros 2016-09-08 00:26:14 +02:00
nm-ip6-config.h device: wait for termination of IPv6 DAD before proceeding to IP_CHECK 2016-05-22 14:20:05 +02:00
nm-logging.c logging: don't round subsecond part in logging timestamp 2016-09-08 00:26:14 +02:00
nm-logging.h logging: don't log the function name 2016-07-05 23:08:06 +02:00
nm-manager.c manager: emit device-removed signal when a device unrealizes 2016-09-16 16:29:05 +02:00
nm-manager.h checkpoint: add create, rollback and destroy D-Bus API 2016-08-17 14:55:34 +02:00
nm-multi-index.c libnm,core: fix syntax of 'transfer' annotation 2016-02-24 17:23:01 +01:00
nm-multi-index.h all: cleanup includes in header files 2016-08-17 19:51:17 +02:00
nm-policy.c policy: always try to update kernel hostname 2016-08-19 10:02:41 +02:00
nm-policy.h all: cleanup includes in header files 2016-08-17 19:51:17 +02:00
nm-rfkill-manager.c core: use #define for "rfkill-changed" signal name 2016-08-23 11:46:28 +02:00
nm-rfkill-manager.h core: use #define for "rfkill-changed" signal name 2016-08-23 11:46:28 +02:00
nm-route-manager.c core/trivial: rename "source" field of addresses and routes 2016-04-28 12:53:21 +02:00
nm-route-manager.h all: cleanup includes in header files 2016-08-17 19:51:17 +02:00
nm-session-monitor.c session-monitor: fix parsing of ConsoleKit database 2016-10-13 09:48:45 +02:00
nm-session-monitor.h all: cleanup includes in header files 2016-08-17 19:51:17 +02:00
nm-sleep-monitor.c sleep-monitor: add functions for delaying the suspension 2016-05-13 14:34:53 +02:00
nm-sleep-monitor.h all: cleanup includes in header files 2016-08-17 19:51:17 +02:00
nm-test-utils-core.h shared: move shared files to subdirectory "shared/nm-utils/" 2016-06-16 10:45:53 +02:00
nm-types.h platform/trivial: rename NM_LINK_TYPE_WWAN_ETHERNET to NM_LINK_TYPE_WWAN_NET 2016-06-17 11:00:10 +02:00
org.freedesktop.NetworkManager.conf dns: use DBus to make dnsmasq nameserver changes 2016-04-21 15:32:07 +02:00