diff options
author | Andrew Yourtchenko <ayourtch@gmail.com> | 2018-08-09 15:30:57 +0200 |
---|---|---|
committer | Neale Ranns <nranns@cisco.com> | 2018-08-09 15:45:03 +0000 |
commit | 7fad624b09f8d1256360222dc547519d8b40dd1c (patch) | |
tree | 2ab6ff5ab7a8cd8f6a5aca53e2ef768958632151 /src/plugins/acl | |
parent | f7f4e399e04774a6ca00b67006610f5b8f7a37c6 (diff) |
acl-plugin: fix failures in some of IPv4 test-debug testcases
Commit 1c7bf5d41737984907e8bad1dc832eb6cb1d6288 added the poisoning
of the newly freed memory in debug builds, exposing a logic
error in mask assignment code - it passed a pointer to
within a pool to a function which might potentially expand the pool.
This resulted in a failure of the test in the debug version.
Fix that by making a local copy of the value before passing
a pointer to it.
Change-Id: I73f3670672c3d86778aad0f944d052d0480cc593
Signed-off-by: Andrew Yourtchenko <ayourtch@gmail.com>
Diffstat (limited to 'src/plugins/acl')
-rw-r--r-- | src/plugins/acl/hash_lookup.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/plugins/acl/hash_lookup.c b/src/plugins/acl/hash_lookup.c index dcc5f791d4b..c8941148036 100644 --- a/src/plugins/acl/hash_lookup.c +++ b/src/plugins/acl/hash_lookup.c @@ -610,17 +610,17 @@ assign_mask_type_index_to_pae(acl_main_t *am, u32 lc_index, int is_ip6, applied_ hash_ace_info_t *ace_info = vec_elt_at_index(ha->rules, pae->hash_ace_info_index); ace_mask_type_entry_t *mte; - fa_5tuple_t *mask; + fa_5tuple_t mask; /* * Start taking base_mask associated to ace, and essentially copy it. * With TupleMerge we will assign a relaxed mask here. */ mte = vec_elt_at_index(am->ace_mask_type_pool, ace_info->base_mask_type_index); - mask = &mte->mask; + mask = mte->mask; if (am->use_tuple_merge) - pae->mask_type_index = tm_assign_mask_type_index(am, mask, is_ip6, lc_index); + pae->mask_type_index = tm_assign_mask_type_index(am, &mask, is_ip6, lc_index); else - pae->mask_type_index = assign_mask_type_index(am, mask); + pae->mask_type_index = assign_mask_type_index(am, &mask); } static void |