[Spice-devel] [spice-gtk 1/2] sasl: Fix memory leaks in spice_channel_perform_auth_sasl()

Marc-André Lureau mlureau at redhat.com
Wed Oct 16 18:33:28 CEST 2013



----- Original Message -----
> Sorry to ask, but what was the leak exactly?

Ok, found some on error. You could simplify the code a bit, to unify a bit more the free() location.

Perhaps have a final "cleanup:" block?

> ----- Original Message -----
> > While looking at the SASL code, I noticed some memory leaks.
> > ---
> >  gtk/spice-channel.c | 12 ++++++++----
> >  1 file changed, 8 insertions(+), 4 deletions(-)
> > 
> > diff --git a/gtk/spice-channel.c b/gtk/spice-channel.c
> > index 08418f7..9b2697e 100644
> > --- a/gtk/spice-channel.c
> > +++ b/gtk/spice-channel.c
> > @@ -1387,7 +1387,9 @@ static gboolean
> > spice_channel_perform_auth_sasl(SpiceChannel *channel)
> >                            SASL_SUCCESS_DATA,
> >                            &saslconn);
> >      g_free(localAddr);
> > +    localAddr = NULL;
> >      g_free(remoteAddr);
> > +    remoteAddr = NULL;
> >  



> >      if (err != SASL_OK) {
> >          g_critical("Failed to create SASL client context: %d (%s)",
> > @@ -1436,8 +1438,6 @@ static gboolean
> > spice_channel_perform_auth_sasl(SpiceChannel *channel)
> >      spice_channel_read(channel, mechlist, len);
> >      mechlist[len] = '\0';
> >      if (c->has_error) {
> > -        g_free(mechlist);
> > -        mechlist = NULL;
> >          goto error;
> >      }
> >  
> > @@ -1450,11 +1450,11 @@ restart:
> >                              &clientout,
> >                              &clientoutlen,
> >                              &mechname);
> > +    g_free(mechlist);
> > +    mechlist = NULL;

Could be also done
> >      if (err != SASL_OK && err != SASL_CONTINUE && err != SASL_INTERACT) {
> >          g_critical("Failed to start SASL negotiation: %d (%s)",
> >                     err, sasl_errdetail(saslconn));
> > -        g_free(mechlist);
> > -        mechlist = NULL;
> >          goto error;
> >      }
> >  
> > @@ -1640,6 +1640,10 @@ complete:
> >      return ret;
> >  
> >  error:
> > +    g_free(localAddr);
> > +    g_free(remoteAddr);
> > +    g_free(mechlist);
> > +    g_free(serverin);
> >      g_clear_object(&addr);
> >      if (saslconn)
> >          sasl_dispose(&saslconn);
> > --
> > 1.8.3.1
> > 
> > _______________________________________________
> > Spice-devel mailing list
> > Spice-devel at lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/spice-devel
> > 
> 


More information about the Spice-devel mailing list