mirror of
https://github.com/archlinuxarm/PKGBUILDs.git
synced 2024-11-28 22:57:37 +00:00
44 lines
1.7 KiB
Diff
44 lines
1.7 KiB
Diff
From 6cb8e687f038424ef54b5c5c3c433be974fbe371 Mon Sep 17 00:00:00 2001
|
|
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
|
Date: Mon, 2 Feb 2015 21:32:28 -0500
|
|
Subject: [PATCH] network-address,test-network: avoid undefined behaviour
|
|
|
|
---
|
|
src/network/networkd-address.c | 4 ++++
|
|
src/network/test-network.c | 3 +--
|
|
2 files changed, 5 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/src/network/networkd-address.c b/src/network/networkd-address.c
|
|
index ce0e923..47033ac 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;
|
|
|
|
diff --git a/src/network/test-network.c b/src/network/test-network.c
|
|
index ea9f938..b4a7be0 100644
|
|
--- a/src/network/test-network.c
|
|
+++ b/src/network/test-network.c
|
|
@@ -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;
|
|
--
|
|
2.3.0
|
|
|