diff options
-rwxr-xr-x[-rw-r--r--] | src/vnet/ip/lookup.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/vnet/ip/lookup.c b/src/vnet/ip/lookup.c index 95f36d41a86..ec9a1f97ac9 100644..100755 --- 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 |