aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--vpp-api-test/vat/api_format.c8
-rw-r--r--vpp/vpp-api/api.c2
2 files changed, 9 insertions, 1 deletions
diff --git a/vpp-api-test/vat/api_format.c b/vpp-api-test/vat/api_format.c
index 1fbe9244909..7b5b4341e86 100644
--- a/vpp-api-test/vat/api_format.c
+++ b/vpp-api-test/vat/api_format.c
@@ -12963,6 +12963,12 @@ api_lisp_locator_dump (vat_main_t * vam)
return -99;
}
+ if (vec_len (ls_name) > 63)
+ {
+ errmsg ("error: locator set name too long!");
+ return -99;
+ }
+
if (!vam->json_output)
{
fformat (vam->ofp, "%=16s%=16s%=16s\n", "locator", "priority",
@@ -12977,7 +12983,7 @@ api_lisp_locator_dump (vat_main_t * vam)
else
{
vec_add1 (ls_name, 0);
- strcpy ((char *) mp->ls_name, (char *) ls_name);
+ strncpy ((char *) mp->ls_name, (char *) ls_name, sizeof (mp->ls_name));
}
/* send it... */
diff --git a/vpp/vpp-api/api.c b/vpp/vpp-api/api.c
index 62dd000f5f9..663096062ef 100644
--- a/vpp/vpp-api/api.c
+++ b/vpp/vpp-api/api.c
@@ -5716,6 +5716,8 @@ vl_api_lisp_locator_dump_t_handler (vl_api_lisp_locator_dump_t * mp)
ls_index = htonl (mp->ls_index);
else
{
+ /* make sure we get a proper C-string */
+ mp->ls_name[sizeof (mp->ls_name) - 1] = 0;
ls_name = format (0, "%s", mp->ls_name);
p = hash_get_mem (lcm->locator_set_index_by_name, ls_name);
if (!p)