diff options
Diffstat (limited to 'src/plugins/vrrp')
-rw-r--r-- | src/plugins/vrrp/node.c | 3 | ||||
-rw-r--r-- | src/plugins/vrrp/vrrp_api.c | 6 |
2 files changed, 8 insertions, 1 deletions
diff --git a/src/plugins/vrrp/node.c b/src/plugins/vrrp/node.c index b819919e428..34d082ec2ff 100644 --- a/src/plugins/vrrp/node.c +++ b/src/plugins/vrrp/node.c @@ -617,7 +617,8 @@ vrrp_input_inline (vlib_main_t * vm, vlib_node_runtime_t * node, } /* Mandatory - packet must be complete */ - if (b0->current_length < sizeof (*vrrp0) + vrrp0->n_addrs * addr_len) + if (b0->current_length < sizeof (*vrrp0) + + ((u32) vrrp0->n_addrs) * addr_len) { error0 = VRRP_ERROR_INCOMPLETE_PKT; goto trace; diff --git a/src/plugins/vrrp/vrrp_api.c b/src/plugins/vrrp/vrrp_api.c index 3b9c256b263..d2badc0345b 100644 --- a/src/plugins/vrrp/vrrp_api.c +++ b/src/plugins/vrrp/vrrp_api.c @@ -211,6 +211,8 @@ vl_api_vrrp_vr_dump_t_handler (vl_api_vrrp_vr_dump_t * mp) u32 sw_if_index; reg = vl_api_client_index_to_registration (mp->client_index); + if (!reg) + return; sw_if_index = htonl (mp->sw_if_index); @@ -340,6 +342,8 @@ vl_api_vrrp_vr_peer_dump_t_handler (vl_api_vrrp_vr_peer_dump_t * mp) vrrp_vr_key_t vr_key; reg = vl_api_client_index_to_registration (mp->client_index); + if (!reg) + return; vr_key.sw_if_index = ntohl (mp->sw_if_index); @@ -456,6 +460,8 @@ vl_api_vrrp_vr_track_if_dump_t_handler (vl_api_vrrp_vr_track_if_dump_t * mp) vrrp_vr_t *vr; reg = vl_api_client_index_to_registration (mp->client_index); + if (!reg) + return; if (!mp->dump_all) { |