diff options
-rw-r--r-- | vpp-api-test/vat/api_format.c | 8 | ||||
-rw-r--r-- | vpp/vpp-api/api.c | 2 |
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) |