From 8bea589cfe0fca1a6f560e16ca66a4cf199041a2 Mon Sep 17 00:00:00 2001 From: Damjan Marion Date: Mon, 4 Apr 2022 22:40:45 +0200 Subject: 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 --- src/plugins/cdp/cdp_input.c | 39 +++++++++++++++++++-------------------- 1 file changed, 19 insertions(+), 20 deletions(-) (limited to 'src/plugins/cdp/cdp_input.c') 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) -- cgit 1.2.3-korg