On Fri, Jun 09, 2017 at 03:11:05PM +0200, Martin Pieuchot wrote: > > The static variable last_zeroed does not look MP safe. If I get > > this code correctly it is only an optimization to avoid multiple > > zeroing in addmask_key. This does not work anyway with addmask_key > > on the stack. > > You're right, I removed the 'static'.
As last_zeroed is always 0 now, there is dead code left over. I think this variable should be killed. > @@ -438,8 +447,8 @@ rn_addmask(void *n_arg, int search, int > } > if (m0 < last_zeroed) > memset(addmask_key + m0, 0, last_zeroed - m0); > - *addmask_key = last_zeroed = mlen; > - tm = rn_search(addmask_key, rn_masktop); > + SALEN(addmask_key) = mlen; This assumes that addmask_key has been zeroed in rn_init(). I think now it must be memset(addmask_key + m0, 0, sizeof(addmask_key) - m0); Maybe the sizeof(addmask_key) could be optimized by using mlen or max_keylen instead. bluhm