[Spice-devel] [PATCH spice 1/2] Use spice_strdup() to avoid crashing on NULL

Alon Levy alevy at redhat.com
Wed Mar 21 03:59:30 PDT 2012


On Wed, Mar 21, 2012 at 12:43:00PM +0200, Alon Levy wrote:
> On Tue, Mar 20, 2012 at 08:30:50PM +0100, Marc-André Lureau wrote:
> > qemu can call spice_server_set_name(s, NULL) when the name is not
> > given. Let's not crash in this case
> 
> /me wonders how he never saw the crash, he doesn't pass -name
> 
> Also, this patch just does s/strdup/spice_strdup/ or am I missing
> something?

Please ignore this part.

> 
> > ---
> >  server/main_channel.c      |    4 ++--
> >  server/red_tunnel_worker.c |    4 ++--
> >  server/reds.c              |   12 ++++++------
> >  3 files changed, 10 insertions(+), 10 deletions(-)
> > 
> > diff --git a/server/main_channel.c b/server/main_channel.c
> > index a9fd24e..dbac010 100644
> > --- a/server/main_channel.c
> > +++ b/server/main_channel.c
> > @@ -637,10 +637,10 @@ static void main_channel_fill_mig_target(MainChannel *main_channel, RedsMigSpice
> >  {
> >      ASSERT(mig_target);
> >      free(main_channel->mig_target.host);
> > -    main_channel->mig_target.host = strdup(mig_target->host);
> > +    main_channel->mig_target.host = spice_strdup(mig_target->host);
> >      free(main_channel->mig_target.cert_subject);
> >      if (mig_target->cert_subject) {
> > -        main_channel->mig_target.cert_subject = strdup(mig_target->cert_subject);
> > +        main_channel->mig_target.cert_subject = spice_strdup(mig_target->cert_subject);
> >      }
> >      main_channel->mig_target.port = mig_target->port;
> >      main_channel->mig_target.sport = mig_target->sport;
> > diff --git a/server/red_tunnel_worker.c b/server/red_tunnel_worker.c
> > index 80e0721..45bf6e1 100644
> > --- a/server/red_tunnel_worker.c
> > +++ b/server/red_tunnel_worker.c
> > @@ -1077,8 +1077,8 @@ static inline TunnelService *__tunnel_worker_add_service(TunnelWorker *worker, u
> >      new_service->group = group;
> >      new_service->port = port;
> >  
> > -    new_service->name = strdup(name);
> > -    new_service->description = strdup(description);
> > +    new_service->name = spice_strdup(name);
> > +    new_service->description = spice_strdup(description);
> >  
> >      ring_add(&worker->services, &new_service->ring_item);
> >      worker->num_services++;
> > diff --git a/server/reds.c b/server/reds.c
> > index c54d30c..b5d185e 100644
> > --- a/server/reds.c
> > +++ b/server/reds.c
> > @@ -2397,7 +2397,7 @@ static void reds_handle_auth_mechname(void *opaque)
> >      }
> >  
> >      free(sasl->mechlist);
> > -    sasl->mechlist = strdup(sasl->mechname);
> > +    sasl->mechlist = spice_strdup(sasl->mechname);
> >  
> >      red_printf("Validated mechname '%s'", sasl->mechname);
> >  
> > @@ -2532,7 +2532,7 @@ static void reds_start_auth_sasl(RedLinkInfo *link)
> >      }
> >      red_printf("Available mechanisms for client: '%s'", mechlist);
> >  
> > -    sasl->mechlist = strdup(mechlist);
> > +    sasl->mechlist = spice_strdup(mechlist);
> >  
> >      mechlistlen = strlen(mechlist);
> >      if (!sync_write(link->stream, &mechlistlen, sizeof(uint32_t))
> > @@ -3829,7 +3829,7 @@ SPICE_GNUC_VISIBLE int spice_server_set_sasl_appname(SpiceServer *s, const char
> >      ASSERT(reds == s);
> >  #if HAVE_SASL
> >      free(sasl_appname);
> > -    sasl_appname = strdup(appname);
> > +    sasl_appname = spice_strdup(appname);
> >      return 0;
> >  #else
> >      return -1;
> > @@ -3839,7 +3839,7 @@ SPICE_GNUC_VISIBLE int spice_server_set_sasl_appname(SpiceServer *s, const char
> >  SPICE_GNUC_VISIBLE void spice_server_set_name(SpiceServer *s, const char *name)
> >  {
> >      free(spice_name);
> > -    spice_name = strdup(name);
> > +    spice_name = spice_strdup(name);
> >  }
> >  
> >  SPICE_GNUC_VISIBLE void spice_server_set_uuid(SpiceServer *s, const uint8_t uuid[16])
> > @@ -4075,9 +4075,9 @@ static int reds_set_migration_dest_info(const char* dest,
> >      spice_migration = spice_new0(RedsMigSpice, 1);
> >      spice_migration->port = port;
> >      spice_migration->sport = secure_port;
> > -    spice_migration->host = strdup(dest);
> > +    spice_migration->host = spice_strdup(dest);
> >      if (cert_subject) {
> > -        spice_migration->cert_subject = strdup(cert_subject);
> > +        spice_migration->cert_subject = spice_strdup(cert_subject);
> >      }
> >  
> >      reds->mig_spice = spice_migration;
> > -- 
> > 1.7.7.6
> > 
> > _______________________________________________
> > Spice-devel mailing list
> > Spice-devel at lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/spice-devel
> _______________________________________________
> 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