From d1ed4867b9bc3a9169838ae544d217bfaf23780b Mon Sep 17 00:00:00 2001 From: flyingeagle23 Date: Thu, 6 Apr 2017 16:47:46 +0800 Subject: VPP-684.Add ip which mask length exceeding upper limit,ping segmentfault Change-Id: I2d1c5e4dbdcab2a81d6c88801183ca0bbc83e1d9 Signed-off-by: flyingeagle23 --- src/vnet/ip/lookup.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) mode change 100644 => 100755 src/vnet/ip/lookup.c (limited to 'src/vnet/ip/lookup.c') diff --git a/src/vnet/ip/lookup.c b/src/vnet/ip/lookup.c old mode 100644 new mode 100755 index 95f36d41a86..ec9a1f97ac9 --- a/src/vnet/ip/lookup.c +++ b/src/vnet/ip/lookup.c @@ -73,7 +73,10 @@ ip_interface_address_add_del (ip_lookup_main_t * lm, a = p ? pool_elt_at_index (lm->if_address_pool, p[0]) : 0; /* Verify given length. */ - if ((a && (address_length != a->address_length)) || (address_length == 0)) + if ((a && (address_length != a->address_length)) || + (address_length == 0) || + (lm->is_ip6 && address_length > 128) || + (!lm->is_ip6 && address_length > 32)) { vnm->api_errno = VNET_API_ERROR_ADDRESS_LENGTH_MISMATCH; return clib_error_create -- cgit 1.2.3-korg