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;
assert_se(address_equal(a1, a2));
assert_se(inet_pton(AF_INET, "192.168.3.9", &a1->in_addr.in));
- assert_se(!address_equal(a1, a2));
+ assert_se(address_equal(a1, a2));
assert_se(inet_pton(AF_INET, "192.168.3.9", &a2->in_addr.in));
assert_se(address_equal(a1, a2));
-
a1->prefixlen = 10;
assert_se(!address_equal(a1, a2));
a2->prefixlen = 10;