diff --git a/bgpd/bgp_nht.c b/bgpd/bgp_nht.c index e595a15196..d39fbec86d 100644 --- a/bgpd/bgp_nht.c +++ b/bgpd/bgp_nht.c @@ -338,7 +338,12 @@ void bgp_parse_nexthop_update(int command, vrf_id_t vrf_id) return; } - zapi_nexthop_update_decode(zclient->ibuf, &nhr); + if (!zapi_nexthop_update_decode(zclient->ibuf, &nhr)) { + if (BGP_DEBUG(nht, NHT)) + zlog_debug("%s: Failure to decode nexthop update", + __PRETTY_FUNCTION__); + return; + } if (command == ZEBRA_NEXTHOP_UPDATE) rn = bgp_node_lookup( diff --git a/pimd/pim_nht.c b/pimd/pim_nht.c index 7b35ca0209..5b297253b2 100644 --- a/pimd/pim_nht.c +++ b/pimd/pim_nht.c @@ -625,7 +625,12 @@ int pim_parse_nexthop_update(int command, struct zclient *zclient, return 0; pim = vrf->info; - zapi_nexthop_update_decode(zclient->ibuf, &nhr); + if (!zapi_nexthop_update_decode(zclient->ibuf, &nhr)) { + if (PIM_DEBUG_PIM_NHT) + zlog_debug("%s: Decode of nexthop update from zebra failed", + __PRETTY_FUNCTION__); + return 0; + } if (command == ZEBRA_NEXTHOP_UPDATE) { prefix_copy(&rpf.rpf_addr, &nhr.prefix);