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/acl | |
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/acl')
-rw-r--r-- | src/plugins/acl/acl.c | 2 | ||||
-rw-r--r-- | src/plugins/acl/acl_test.c | 24 | ||||
-rw-r--r-- | src/plugins/acl/hash_lookup.c | 4 | ||||
-rw-r--r-- | src/plugins/acl/sess_mgmt_node.c | 7 |
4 files changed, 18 insertions, 19 deletions
diff --git a/src/plugins/acl/acl.c b/src/plugins/acl/acl.c index 01a1e87a29b..a7b81049761 100644 --- a/src/plugins/acl/acl.c +++ b/src/plugins/acl/acl.c @@ -3736,7 +3736,7 @@ acl_init (vlib_main_t * vm) vec_validate (pw->expired, ACL_N_TIMEOUTS * am->fa_max_deleted_sessions_per_interval); - _vec_len (pw->expired) = 0; + vec_set_len (pw->expired, 0); vec_validate_init_empty (pw->fa_conn_list_head, ACL_N_TIMEOUTS - 1, FA_SESSION_BOGUS_INDEX); vec_validate_init_empty (pw->fa_conn_list_tail, ACL_N_TIMEOUTS - 1, diff --git a/src/plugins/acl/acl_test.c b/src/plugins/acl/acl_test.c index 44abf30923d..7514a8e2e85 100644 --- a/src/plugins/acl/acl_test.c +++ b/src/plugins/acl/acl_test.c @@ -493,10 +493,10 @@ static int api_acl_add_replace (vat_main_t * vam) if (vec_len(tag) >= sizeof(mp->tag)) { tag[sizeof(mp->tag)-1] = 0; - _vec_len(tag) = sizeof(mp->tag); - } - clib_memcpy(mp->tag, tag, vec_len(tag)); - vec_free(tag); + vec_set_len (tag, sizeof (mp->tag)); + } + clib_memcpy (mp->tag, tag, vec_len (tag)); + vec_free (tag); } mp->acl_index = ntohl(acl_index); mp->count = htonl(n_rules); @@ -1333,10 +1333,10 @@ static int api_macip_acl_add (vat_main_t * vam) if (vec_len(tag) >= sizeof(mp->tag)) { tag[sizeof(mp->tag)-1] = 0; - _vec_len(tag) = sizeof(mp->tag); - } - clib_memcpy(mp->tag, tag, vec_len(tag)); - vec_free(tag); + vec_set_len (tag, sizeof (mp->tag)); + } + clib_memcpy (mp->tag, tag, vec_len (tag)); + vec_free (tag); } mp->count = htonl(n_rules); @@ -1475,10 +1475,10 @@ static int api_macip_acl_add_replace (vat_main_t * vam) if (vec_len(tag) >= sizeof(mp->tag)) { tag[sizeof(mp->tag)-1] = 0; - _vec_len(tag) = sizeof(mp->tag); - } - clib_memcpy(mp->tag, tag, vec_len(tag)); - vec_free(tag); + vec_set_len (tag, sizeof (mp->tag)); + } + clib_memcpy (mp->tag, tag, vec_len (tag)); + vec_free (tag); } mp->acl_index = ntohl(acl_index); diff --git a/src/plugins/acl/hash_lookup.c b/src/plugins/acl/hash_lookup.c index 85b54b3e8ac..c137b15a080 100644 --- a/src/plugins/acl/hash_lookup.c +++ b/src/plugins/acl/hash_lookup.c @@ -682,7 +682,7 @@ hash_acl_apply(acl_main_t *am, u32 lc_index, int acl_index, u32 acl_position) if (vec_len(ha->rules) > 0) { int old_vec_len = vec_len(*applied_hash_aces); vec_validate((*applied_hash_aces), old_vec_len + vec_len(ha->rules) - 1); - _vec_len((*applied_hash_aces)) = old_vec_len; + vec_set_len ((*applied_hash_aces), old_vec_len); } /* add the rules from the ACL to the hash table for lookup and append to the vector*/ @@ -903,7 +903,7 @@ hash_acl_unapply(acl_main_t *am, u32 lc_index, int acl_index) move_applied_ace_hash_entry(am, lc_index, applied_hash_aces, tail_offset + i, base_offset + i); } /* trim the end of the vector */ - _vec_len((*applied_hash_aces)) -= vec_len(ha->rules); + vec_dec_len ((*applied_hash_aces), vec_len (ha->rules)); remake_hash_applied_mask_info_vec(am, applied_hash_aces, lc_index); diff --git a/src/plugins/acl/sess_mgmt_node.c b/src/plugins/acl/sess_mgmt_node.c index f9a3064cbb1..d0ec5936896 100644 --- a/src/plugins/acl/sess_mgmt_node.c +++ b/src/plugins/acl/sess_mgmt_node.c @@ -188,8 +188,7 @@ acl_fa_check_idle_sessions (acl_main_t * am, u16 thread_index, u64 now) } } if (pw->wip_session_change_requests) - _vec_len (pw->wip_session_change_requests) = 0; - + vec_set_len (pw->wip_session_change_requests, 0); { u8 tt = 0; @@ -309,7 +308,7 @@ acl_fa_check_idle_sessions (acl_main_t * am, u16 thread_index, u64 now) total_expired = vec_len (pw->expired); /* zero out the vector which we have acted on */ if (pw->expired) - _vec_len (pw->expired) = 0; + vec_set_len (pw->expired, 0); /* if we were advancing and reached the end * (no more sessions to recycle), reset the fast-forward timestamp */ @@ -788,7 +787,7 @@ acl_fa_session_cleaner_process (vlib_main_t * vm, vlib_node_runtime_t * rt, send_interrupts_to_workers (vm, am); if (event_data) - _vec_len (event_data) = 0; + vec_set_len (event_data, 0); /* * If the interrupts were not processed yet, ensure we wait a bit, |