7a799ebb2c
Compilers are allowed to and do optimize memset(3) calls away for pointers not accessed in the future. Since the memzero wrappers purpose is exactly to unconditionally override memory (e.g. for stored passwords) do not implement via regular memset(3), but via either memset_s(3), explicit_bzero(3) or a hand written implementation using volatile pointers. See https://wiki.sei.cmu.edu/confluence/display/c/MSC06-C.+Beware+of+compiler+optimizations