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>
hash_ace_info_t *ace_info = vec_elt_at_index(ha->rules, pae->hash_ace_info_index);
ace_mask_type_entry_t *mte;
hash_ace_info_t *ace_info = vec_elt_at_index(ha->rules, pae->hash_ace_info_index);
ace_mask_type_entry_t *mte;
/*
* 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);
/*
* 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);
- 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);
- pae->mask_type_index = assign_mask_type_index(am, mask);
+ pae->mask_type_index = assign_mask_type_index(am, &mask);