From dd9546e1966e91de0f88bdcba19c93440b8df006 Mon Sep 17 00:00:00 2001 From: Stephen Worley Date: Tue, 3 Sep 2019 16:43:42 -0400 Subject: [PATCH] lib: Add NULL check in nexthop_group_equal*() iter Add NULL checks in `nexthop_group_equal*()` iteration before calling `nexthop_same()` to make Clang SA happy. Signed-off-by: Stephen Worley --- lib/nexthop_group.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/lib/nexthop_group.c b/lib/nexthop_group.c index 54868d7fca..35599488bf 100644 --- a/lib/nexthop_group.c +++ b/lib/nexthop_group.c @@ -145,12 +145,19 @@ bool nexthop_group_equal_no_recurse(const struct nexthop_group *nhg1, if (!nhg1 && nhg2) return false; + if (nhg1 == nhg2) + return true; + if (nexthop_group_nexthop_num_no_recurse(nhg1) != nexthop_group_nexthop_num_no_recurse(nhg2)) return false; for (nh1 = nhg1->nexthop, nh2 = nhg2->nexthop; nh1 || nh2; nh1 = nh1->next, nh2 = nh2->next) { + if (nh1 && !nh2) + return false; + if (!nh1 && nh2) + return false; if (!nexthop_same(nh1, nh2)) return false; } @@ -171,11 +178,18 @@ bool nexthop_group_equal(const struct nexthop_group *nhg1, if (!nhg1 && nhg2) return false; + if (nhg1 == nhg2) + return true; + if (nexthop_group_nexthop_num(nhg1) != nexthop_group_nexthop_num(nhg2)) return false; for (nh1 = nhg1->nexthop, nh2 = nhg2->nexthop; nh1 || nh2; nh1 = nexthop_next(nh1), nh2 = nexthop_next(nh2)) { + if (nh1 && !nh2) + return false; + if (!nh1 && nh2) + return false; if (!nexthop_same(nh1, nh2)) return false; } -- 2.39.5