X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fnetwork%2Fnetworkd-address.c;h=47033acde4e1fab18fcb32e764d13a53707fcf12;hp=ce0e923cbe035092f362ec4d8a42396c8f921aa6;hb=6cb8e687f038424ef54b5c5c3c433be974fbe371;hpb=c1d630d5fd3c0b3307811d51f9840652e066a0f2 diff --git a/src/network/networkd-address.c b/src/network/networkd-address.c index ce0e923cb..47033acde 100644 --- a/src/network/networkd-address.c +++ b/src/network/networkd-address.c @@ -592,6 +592,10 @@ bool address_equal(Address *a1, Address *a2) { case AF_INET: if (a1->prefixlen != a2->prefixlen) return false; + else if (a1->prefixlen == 0) + /* make sure we don't try to shift by 32. + * See ISO/IEC 9899:TC3 § 6.5.7.3. */ + return true; else { uint32_t b1, b2;