Any u8* variable created by format() is NOT null-terminated.
Add the null terminating byte with vec_terminate_c_string().
If that variable is used by (at least) hash_get_mem(), then it needs to
be null-terminated, as it will go through string_key_sum() which makes a
call to strlen.
Change-Id: I4e51e1b6668f557e53af3bb897cd281598eedbc0
Signed-off-by: Gabriel Ganne <gabriel.ganne@enea.com>
mp->locator_set_name[63] = 0;
locator_name = format (0, "%s", mp->locator_set_name);
mp->locator_set_name[63] = 0;
locator_name = format (0, "%s", mp->locator_set_name);
+ vec_terminate_c_string (locator_name);
a->name = locator_name;
a->is_add = mp->is_add;
a->name = locator_name;
a->is_add = mp->is_add;
mp->locator_set_name[63] = 0;
locator_name = format (0, "%s", mp->locator_set_name);
mp->locator_set_name[63] = 0;
locator_name = format (0, "%s", mp->locator_set_name);
+ vec_terminate_c_string (locator_name);
a->name = locator_name;
a->locators = locators;
a->name = locator_name;
a->locators = locators;
mp->locator_set_name[63] = 0;
name = format (0, "%s", mp->locator_set_name);
mp->locator_set_name[63] = 0;
name = format (0, "%s", mp->locator_set_name);
+ vec_terminate_c_string (name);
p = hash_get_mem (lcm->locator_set_index_by_name, name);
if (!p)
{
p = hash_get_mem (lcm->locator_set_index_by_name, name);
if (!p)
{
u8 *ls_name = 0;
ls_name = format (0, "%s", mp->ls_name);
u8 *ls_name = 0;
ls_name = format (0, "%s", mp->ls_name);
+ vec_terminate_c_string (ls_name);
rv = vnet_lisp_pitr_set_locator_set (ls_name, mp->is_add);
vec_free (ls_name);
rv = vnet_lisp_pitr_set_locator_set (ls_name, mp->is_add);
vec_free (ls_name);
mp->locator_set_name[63] = 0;
locator_set_name = format (0, "%s", mp->locator_set_name);
mp->locator_set_name[63] = 0;
locator_set_name = format (0, "%s", mp->locator_set_name);
+ vec_terminate_c_string (locator_set_name);
a->is_add = mp->is_add;
a->locator_set_name = locator_set_name;
a->is_add = mp->is_add;
a->locator_set_name = locator_set_name;
/* 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);
/* 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);
+ vec_terminate_c_string (ls_name);
p = hash_get_mem (lcm->locator_set_index_by_name, ls_name);
if (!p)
goto out;
p = hash_get_mem (lcm->locator_set_index_by_name, ls_name);
if (!p)
goto out;
memset (a, 0, sizeof (a[0]));
locator_name = format (0, "%s", mp->locator_set_name);
memset (a, 0, sizeof (a[0]));
locator_name = format (0, "%s", mp->locator_set_name);
+ vec_terminate_c_string (locator_name);
a->name = locator_name;
a->is_add = mp->is_add;
a->name = locator_name;
a->is_add = mp->is_add;
vec_add1 (locators, locator);
locator_name = format (0, "%s", mp->locator_set_name);
vec_add1 (locators, locator);
locator_name = format (0, "%s", mp->locator_set_name);
+ vec_terminate_c_string (locator_name);
a->name = locator_name;
a->locators = locators;
a->name = locator_name;
a->locators = locators;
}
name = format (0, "%s", mp->locator_set_name);
}
name = format (0, "%s", mp->locator_set_name);
+ vec_terminate_c_string (name);
p = hash_get_mem (lcm->locator_set_index_by_name, name);
if (!p)
{
p = hash_get_mem (lcm->locator_set_index_by_name, name);
if (!p)
{
u8 *ls_name = 0;
ls_name = format (0, "%s", mp->ls_name);
u8 *ls_name = 0;
ls_name = format (0, "%s", mp->ls_name);
+ vec_terminate_c_string (ls_name);
rv = vnet_lisp_nsh_set_locator_set (ls_name, mp->is_add);
vec_free (ls_name);
rv = vnet_lisp_nsh_set_locator_set (ls_name, mp->is_add);
vec_free (ls_name);
u8 *ls_name = 0;
ls_name = format (0, "%s", mp->ls_name);
u8 *ls_name = 0;
ls_name = format (0, "%s", mp->ls_name);
+ vec_terminate_c_string (ls_name);
rv = vnet_lisp_pitr_set_locator_set (ls_name, mp->is_add);
vec_free (ls_name);
rv = vnet_lisp_pitr_set_locator_set (ls_name, mp->is_add);
vec_free (ls_name);
vnet_lisp_add_del_mreq_itr_rloc_args_t _a, *a = &_a;
locator_set_name = format (0, "%s", mp->locator_set_name);
vnet_lisp_add_del_mreq_itr_rloc_args_t _a, *a = &_a;
locator_set_name = format (0, "%s", mp->locator_set_name);
+ vec_terminate_c_string (locator_set_name);
a->is_add = mp->is_add;
a->locator_set_name = locator_set_name;
a->is_add = mp->is_add;
a->locator_set_name = locator_set_name;
/* 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);
/* 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);
+ vec_terminate_c_string (ls_name);
p = hash_get_mem (lcm->locator_set_index_by_name, ls_name);
if (!p)
goto out;
p = hash_get_mem (lcm->locator_set_index_by_name, ls_name);
if (!p)
goto out;
u32 policer_index;
name = format (0, "%s", mp->name);
u32 policer_index;
name = format (0, "%s", mp->name);
+ vec_terminate_c_string (name);
memset (&cfg, 0, sizeof (cfg));
cfg.rfc = mp->type;
memset (&cfg, 0, sizeof (cfg));
cfg.rfc = mp->type;
if (mp->match_name_valid)
{
match_name = format (0, "%s%c", mp->match_name, 0);
if (mp->match_name_valid)
{
match_name = format (0, "%s%c", mp->match_name, 0);
+ vec_terminate_c_string (match_name);
}
if (mp->match_name_valid)
}
if (mp->match_name_valid)
vnet_hw_interface_t *hi = 0;
u8 *intf_name = format (0, "pg%d", ntohl (mp->interface_id), 0);
vnet_hw_interface_t *hi = 0;
u8 *intf_name = format (0, "pg%d", ntohl (mp->interface_id), 0);
+ vec_terminate_c_string (intf_name);
u32 hw_if_index = ~0;
uword *p = hash_get_mem (im->hw_interface_by_name, intf_name);
if (p)
u32 hw_if_index = ~0;
uword *p = hash_get_mem (im->hw_interface_by_name, intf_name);
if (p)
u8 *arc_name = format (0, "%s%c", mp->arc_name, 0);
u8 *feature_name = format (0, "%s%c", mp->feature_name, 0);
u8 *arc_name = format (0, "%s%c", mp->arc_name, 0);
u8 *feature_name = format (0, "%s%c", mp->feature_name, 0);
+ vec_terminate_c_string (arc_name);
+ vec_terminate_c_string (feature_name);
+
vnet_feature_registration_t *reg =
vnet_get_feature_reg ((const char *) arc_name,
(const char *) feature_name);
vnet_feature_registration_t *reg =
vnet_get_feature_reg ((const char *) arc_name,
(const char *) feature_name);