zebra: make fpm netlink_route_info_fill more robust
Having an RTM_ADDROUTE with a rib == NULL would lead
to a crash due to a NULL pointer dereference.
Since an RTM_ADDROUTE without a rib object doesn't make
much sense, print a warning and remove the concerned
route instead.
Signed-off-by: Christian Franke <chris@opensourcerouting.org>
Signed-off-by: Christian Franke <chris@opensourcerouting.org>
Tested-by: NetDEF CI System <cisystem@netdef.org>
diff --git a/zebra/zebra_fpm_netlink.c b/zebra/zebra_fpm_netlink.c
index 59e861b..175d351 100644
--- a/zebra/zebra_fpm_netlink.c
+++ b/zebra/zebra_fpm_netlink.c
@@ -252,11 +252,16 @@
* An RTM_DELROUTE need not be accompanied by any nexthops,
* particularly in our communication with the FPM.
*/
- if (cmd == RTM_DELROUTE && !rib)
+ if (cmd == RTM_DELROUTE)
goto skip;
- if (rib)
- ri->rtm_protocol = netlink_proto_from_route_type (rib->type);
+ if (!rib)
+ {
+ zlog_err("netlink_route_info_fill RTM_ADDROUTE called without rib info");
+ return 0;
+ }
+
+ ri->rtm_protocol = netlink_proto_from_route_type (rib->type);
if ((rib->flags & ZEBRA_FLAG_BLACKHOLE) || (rib->flags & ZEBRA_FLAG_REJECT))
discard = 1;