network-address,test-network: avoid undefined behaviour
This commit is contained in:
parent
c1d630d5fd
commit
6cb8e687f0
|
@ -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;
|
||||
|
||||
|
|
|
@ -158,10 +158,9 @@ static void test_address_equality(void) {
|
|||
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;
|
||||
|
|
Loading…
Reference in New Issue