[gnutls-help] gnutls_memset: use explicit_bzero

Nikos Mavrogiannopoulos n.mavrogiannopoulos at gmail.com
Fri Apr 5 18:20:20 CEST 2019


On Thu, 2019-03-28 at 23:08 +0100, Maciej S. Szmigiero wrote:
> On 27.03.2019 08:24, Nikos Mavrogiannopoulos wrote:
> > On Mon, 2019-03-11 at 00:02 +0100, Maciej S. Szmigiero wrote:
> > > > That is, use the glibc function when available and the second
> > > > parameter is zero.
> > > > 
> > > > Resolves #230
> > > > 
> > > > Signed-off-by: Nikos Mavrogiannopoulos <nmav at redhat.com>
> > > > ---(..)
> > > > --- a/lib/safe-memfuncs.c
> > > > +++ b/lib/safe-memfuncs.c
> > > > @@ -33,14 +30,18 @@
> > > >   * This function will operate similarly to memset(), but will
> > > >   * not be optimized out by the compiler.
> > > >   *
> > > > - * Returns: void.
> > > > - *
> > > >   * Since: 3.4.0
> > > >   **/
> > > >  void gnutls_memset(void *data, int c, size_t size)
> > > >  {
> > > > -	volatile unsigned volatile_zero = 0;
> > > > +	volatile unsigned volatile_zero;
> > > >  	volatile char *vdata = (volatile char*)data;
> > > > +#ifdef HAVE_EXPLICIT_BZERO
> > > > +	if (c == 0) {
> > > > +		explicit_bzero(data, size);
> > > 
> > > Shouldn't the function return here?
> > > 
> > > Because otherwise it is doing the zeroing twice:
> > > first time via explicit_bzero(),
> > > second time via a volatile trick below.
> > 
> > You are right. Would you like to send a merge request fixing that?
> 
> While I don't have a gitlab account to open a merge request there
> I have attached a patch made by git-format-patch.
> Hope this way will work, too.
> 

Thank you!





More information about the Gnutls-help mailing list