diff options
author | Eyal Bari <ebari@cisco.com> | 2018-07-22 12:45:15 +0300 |
---|---|---|
committer | John Lo <loj@cisco.com> | 2018-07-23 15:37:01 +0000 |
commit | cd30774fa9280736ffaea3e9a51948593e8eebc2 (patch) | |
tree | 3e9e17648b67bd344af21739d8f24504d3d9fccd /src/plugins | |
parent | b7d41fc18e43e4b839b6297d776c4a3e31fd1fb6 (diff) |
fix vector index range checks
Change-Id: I63c36644c9d93f2c3ec6606ca0205b407499de4e
Signed-off-by: Eyal Bari <ebari@cisco.com>
Diffstat (limited to 'src/plugins')
-rw-r--r-- | src/plugins/acl/acl.c | 4 | ||||
-rw-r--r-- | src/plugins/acl/session_inlines.h | 11 | ||||
-rw-r--r-- | src/plugins/dpdk/device/flow.c | 2 |
3 files changed, 6 insertions, 11 deletions
diff --git a/src/plugins/acl/acl.c b/src/plugins/acl/acl.c index 56bd530ca72..8f2be5d197b 100644 --- a/src/plugins/acl/acl.c +++ b/src/plugins/acl/acl.c @@ -1418,7 +1418,7 @@ acl_interface_add_del_inout_acl (u32 sw_if_index, u8 is_add, u8 is_input, } else { - if (sw_if_index > vec_len (*pinout_acl_vec_by_sw_if_index)) + if (sw_if_index >= vec_len (*pinout_acl_vec_by_sw_if_index)) { rv = VNET_API_ERROR_NO_SUCH_ENTRY; goto done; @@ -3457,7 +3457,7 @@ macip_acl_print (acl_main_t * am, u32 macip_acl_index) int i; /* Don't try to print someone else's memory */ - if (macip_acl_index > vec_len (am->macip_acls)) + if (macip_acl_index >= vec_len (am->macip_acls)) return; macip_acl_list_t *a = vec_elt_at_index (am->macip_acls, macip_acl_index); diff --git a/src/plugins/acl/session_inlines.h b/src/plugins/acl/session_inlines.h index 4d5dfe7587a..0d7c1e4ace7 100644 --- a/src/plugins/acl/session_inlines.h +++ b/src/plugins/acl/session_inlines.h @@ -120,15 +120,10 @@ always_inline fa_session_t * get_session_ptr (acl_main_t * am, u16 thread_index, u32 session_index) { acl_fa_per_worker_data_t *pw = &am->per_worker_data[thread_index]; - if (session_index > vec_len (pw->fa_sessions_pool)) - { - return 0; - } + if (session_index >= vec_len (pw->fa_sessions_pool)) + return 0; - fa_session_t *sess = (session_index > vec_len (pw->fa_sessions_pool)) ? 0 : - pool_elt_at_index (pw->fa_sessions_pool, - session_index); - return sess; + return pool_elt_at_index (pw->fa_sessions_pool, session_index); } always_inline int diff --git a/src/plugins/dpdk/device/flow.c b/src/plugins/dpdk/device/flow.c index 31818f1c447..351390b6d34 100644 --- a/src/plugins/dpdk/device/flow.c +++ b/src/plugins/dpdk/device/flow.c @@ -368,7 +368,7 @@ format_dpdk_flow (u8 * s, va_list * args) return s; } - if (private_data > vec_len (xd->flow_entries)) + if (private_data >= vec_len (xd->flow_entries)) return format (s, "unknown flow"); fe = vec_elt_at_index (xd->flow_entries, private_data); |