On Sun, Apr 12, 2015 at 12:43 PM, Lennart Poettering <lenn...@poettering.net> wrote: > On Wed, 11.03.15 08:13, Shawn Landden (sh...@churchofgit.com) wrote: > >> We shouldn't assume 64-bit arch with the way we do math either. >> (although I will submit a patch to glibc to add a uint64_t union >> alias) > > Hmm? uint64_t works fine on 32bit too. The compiler can do the > necessary emulation on its own... I don't see the need to change > anything here. Its also an unaligned access. in_addr.in6 is only 32-bit aligned. (in addition to being a strict aliasing violation.) > >> diff --git a/src/network/networkd-address.c b/src/network/networkd-address.c >> index 0be6165..4b7f451 100644 >> --- a/src/network/networkd-address.c >> +++ b/src/network/networkd-address.c >> @@ -605,12 +605,12 @@ bool address_equal(Address *a1, Address *a2) { >> } >> >> case AF_INET6: { >> - uint64_t *b1, *b2; >> + uint32_t *b1, *b2; >> >> - b1 = (uint64_t*)&a1->in_addr.in6; >> - b2 = (uint64_t*)&a2->in_addr.in6; >> + b1 = &a1->in_addr.in6.s6_addr32[0]; >> + b2 = &a2->in_addr.in6.s6_addr32[0]; >> >> - return (((b1[0] ^ b2[0]) | (b1[1] ^ b2[1])) == 0UL); >> + return (((b1[0] ^ b2[0]) | (b1[1] ^ b2[1]) | (b1[2] ^ >> b2[2]) | (b1[3] ^ b2[3])) == 0); >> } >> >> default: >> -- >> 2.2.1.209.g41e5f3a >> >> _______________________________________________ >> systemd-devel mailing list >> systemd-devel@lists.freedesktop.org >> http://lists.freedesktop.org/mailman/listinfo/systemd-devel > > > Lennart > > -- > Lennart Poettering, Red Hat > _______________________________________________ > systemd-devel mailing list > systemd-devel@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- Shawn Landden _______________________________________________ systemd-devel mailing list systemd-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/systemd-devel