diff options
author | Damjan Marion <damarion@cisco.com> | 2022-04-04 22:40:45 +0200 |
---|---|---|
committer | Damjan Marion <dmarion@me.com> | 2022-04-04 23:17:13 +0000 |
commit | 8bea589cfe0fca1a6f560e16ca66a4cf199041a2 (patch) | |
tree | cf2767f8f5f31344468b65e14baa3f1a4c85fb91 /src/plugins/cdp | |
parent | a2b358b1faf6e762e1d29a931d83c7735ac9a77d (diff) |
vppinfra: make _vec_len() read-only
Use of _vec_len() to set vector length breaks address sanitizer.
Users should use vec_set_len(), vec_inc_len(), vec_dec_len () instead.
Type: improvement
Change-Id: I441ae948771eb21c23a61f3ff9163bdad74a2cb8
Signed-off-by: Damjan Marion <damarion@cisco.com>
Diffstat (limited to 'src/plugins/cdp')
-rw-r--r-- | src/plugins/cdp/cdp_input.c | 39 | ||||
-rw-r--r-- | src/plugins/cdp/cdp_periodic.c | 4 |
2 files changed, 21 insertions, 22 deletions
diff --git a/src/plugins/cdp/cdp_input.c b/src/plugins/cdp/cdp_input.c index 76a3d70a292..c6198d81de1 100644 --- a/src/plugins/cdp/cdp_input.c +++ b/src/plugins/cdp/cdp_input.c @@ -167,25 +167,24 @@ _(version,DEBUG_TLV_DUMP) \ _(platform,DEBUG_TLV_DUMP) \ _(port_id,DEBUG_TLV_DUMP) -#define _(z,dbg) \ -static \ -cdp_error_t process_##z##_tlv (cdp_main_t *cm, cdp_neighbor_t *n, \ - cdp_tlv_t *t) \ -{ \ - int i; \ - if (dbg) \ - fformat(stdout, "%U\n", format_text_tlv, t); \ - \ - if (n->z) \ - _vec_len(n->z) = 0; \ - \ - for (i = 0; i < (t->l - sizeof (*t)); i++) \ - vec_add1(n->z, t->v[i]); \ - \ - vec_add1(n->z, 0); \ - \ - return CDP_ERROR_NONE; \ -} +#define _(z, dbg) \ + static cdp_error_t process_##z##_tlv (cdp_main_t *cm, cdp_neighbor_t *n, \ + cdp_tlv_t *t) \ + { \ + int i; \ + if (dbg) \ + fformat (stdout, "%U\n", format_text_tlv, t); \ + \ + if (n->z) \ + vec_set_len (n->z, 0); \ + \ + for (i = 0; i < (t->l - sizeof (*t)); i++) \ + vec_add1 (n->z, t->v[i]); \ + \ + vec_add1 (n->z, 0); \ + \ + return CDP_ERROR_NONE; \ + } foreach_text_to_struct_tlv #undef _ @@ -354,7 +353,7 @@ cdp_input (vlib_main_t * vm, vlib_buffer_t * b0, u32 bi0) */ if (n->last_rx_pkt) - _vec_len (n->last_rx_pkt) = 0; + vec_set_len (n->last_rx_pkt, 0); /* cdp disabled on this interface, we're done */ if (n->disabled) diff --git a/src/plugins/cdp/cdp_periodic.c b/src/plugins/cdp/cdp_periodic.c index c73d86be316..295cf8fcfb1 100644 --- a/src/plugins/cdp/cdp_periodic.c +++ b/src/plugins/cdp/cdp_periodic.c @@ -394,9 +394,9 @@ cdp_periodic (vlib_main_t * vm) delete_neighbor (cm, n, 1); } if (delete_list) - _vec_len (delete_list) = 0; + vec_set_len (delete_list, 0); if (n_list) - _vec_len (n_list) = 0; + vec_set_len (n_list, 0); } static clib_error_t * |