From e17d9b2dfe77e5b5962b02566eb22f209cd431bf Mon Sep 17 00:00:00 2001 From: Stephen Worley Date: Thu, 26 Jul 2018 15:10:53 -0400 Subject: [PATCH] zebra: Make prefix length check return error Prefix length validation checks should be returning an error rather than 0. Switch to that and make them error messages. Signed-off-by: Stephen Worley --- zebra/if_netlink.c | 8 ++++---- zebra/rt_netlink.c | 12 ++++++------ 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/zebra/if_netlink.c b/zebra/if_netlink.c index f03252369..a8cf5e31b 100644 --- a/zebra/if_netlink.c +++ b/zebra/if_netlink.c @@ -992,10 +992,10 @@ int netlink_interface_addr(struct nlmsghdr *h, ns_id_t ns_id, int startup) /* Register interface address to the interface. */ if (ifa->ifa_family == AF_INET) { if (ifa->ifa_prefixlen > IPV4_MAX_BITLEN) { - zlog_warn( + zlog_err( "Invalid prefix length: %u received from kernel interface addr change: %u", ifa->ifa_prefixlen, h->nlmsg_type); - return 0; + return -1; } if (h->nlmsg_type == RTM_NEWADDR) connected_add_ipv4(ifp, flags, (struct in_addr *)addr, @@ -1008,10 +1008,10 @@ int netlink_interface_addr(struct nlmsghdr *h, ns_id_t ns_id, int startup) } if (ifa->ifa_family == AF_INET6) { if (ifa->ifa_prefixlen > IPV6_MAX_BITLEN) { - zlog_warn( + zlog_err( "Invalid prefix length: %u received from kernel interface addr change: %u", ifa->ifa_prefixlen, h->nlmsg_type); - return 0; + return -1; } if (h->nlmsg_type == RTM_NEWADDR) { /* Only consider valid addresses; we'll not get a diff --git a/zebra/rt_netlink.c b/zebra/rt_netlink.c index f396044bb..6eeede6f6 100644 --- a/zebra/rt_netlink.c +++ b/zebra/rt_netlink.c @@ -385,10 +385,10 @@ static int netlink_route_change_read_unicast(struct nlmsghdr *h, ns_id_t ns_id, if (rtm->rtm_family == AF_INET) { p.family = AF_INET; if (rtm->rtm_dst_len > IPV4_MAX_BITLEN) { - zlog_warn( + zlog_err( "Invalid destination prefix length: %u received from kernel route change", rtm->rtm_dst_len); - return 0; + return -1; } memcpy(&p.u.prefix4, dest, 4); p.prefixlen = rtm->rtm_dst_len; @@ -399,20 +399,20 @@ static int netlink_route_change_read_unicast(struct nlmsghdr *h, ns_id_t ns_id, } else if (rtm->rtm_family == AF_INET6) { p.family = AF_INET6; if (rtm->rtm_dst_len > IPV6_MAX_BITLEN) { - zlog_warn( + zlog_err( "Invalid destination prefix length: %u received from kernel route change", rtm->rtm_dst_len); - return 0; + return -1; } memcpy(&p.u.prefix6, dest, 16); p.prefixlen = rtm->rtm_dst_len; src_p.family = AF_INET6; if (rtm->rtm_src_len > IPV6_MAX_BITLEN) { - zlog_warn( + zlog_err( "Invalid source prefix length: %u received from kernel route change", rtm->rtm_src_len); - return 0; + return -1; } memcpy(&src_p.prefix, src, 16); src_p.prefixlen = rtm->rtm_src_len; -- 2.39.2