summaryrefslogtreecommitdiff
path: root/lib/if.c
diff options
context:
space:
mode:
authorQuentin Young <qlyoung@cumulusnetworks.com>2020-01-03 19:25:38 -0500
committerQuentin Young <qlyoung@cumulusnetworks.com>2020-01-03 19:25:38 -0500
commite33d7b6a0365b7d1c5708dd4015ae662f64bc104 (patch)
tree5343d2701caeba90f4fa589553571377e7d90a91 /lib/if.c
parentb833cc1ff473e5de43a6c33b520024c943db180c (diff)
lib: fix ifindex comparison overflow
Very small (negative!) ifindexes, when subtracted, can overflow. Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
Diffstat (limited to 'lib/if.c')
-rw-r--r--lib/if.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/lib/if.c b/lib/if.c
index c91407084e..7332dceb45 100644
--- a/lib/if.c
+++ b/lib/if.c
@@ -137,7 +137,12 @@ static int if_cmp_func(const struct interface *ifp1,
static int if_cmp_index_func(const struct interface *ifp1,
const struct interface *ifp2)
{
- return ifp1->ifindex - ifp2->ifindex;
+ if (ifp1->ifindex == ifp2->ifindex)
+ return 0;
+ else if (ifp1->ifindex > ifp2->ifindex)
+ return 1;
+ else
+ return -1;
}
static void ifp_connected_free(void *arg)