[libvirt] [PATCH] xm_internal.c: remove misleading dead code

Daniel P. Berrange berrange at redhat.com
Tue Dec 15 16:07:32 UTC 2009


On Tue, Dec 15, 2009 at 04:49:27PM +0100, Jim Meyering wrote:
> Daniel P. Berrange wrote:
> 
> > On Mon, Dec 14, 2009 at 09:40:59PM +0100, Jim Meyering wrote:
> >> This code triggered a warning about possible NULL-dereference.
> >> Actually it's more about being self-contradictory, since
> >> the NULL-dereference is not possible.
> >>
> >> >From 796e3a3254cb08fc20bce790997b5787dab51902 Mon Sep 17 00:00:00 2001
> >> From: Jim Meyering <meyering at redhat.com>
> >> Date: Mon, 14 Dec 2009 21:37:54 +0100
> >> Subject: [PATCH] xm_internal.c: remove misleading dead code
> >>
> >> * src/xen/xm_internal.c (xenXMConfigGetULong): Remove useless and
> >> misleading test (always false) for val->str == NULL before code that
> >> always dereferences val->str.  "val" comes from virConfGetValue, and
> >> at that point, val->str is guaranteed to be non-NULL.
> >> (xenXMConfigGetBool): Likewise.
> >
> > It isn't entirely clear to me that the virConf class guarnetees
> > val->str to be  non-NULL.
> 
> virConfParseValue ensures that non val->str it produces is never NULL.
> 
> As you pointed out, there's still the possibility that some
> internal caller of virConfSetValue could mistakenly introduce
> an invalid entry.  How about amending my patch with this addition
> to prevent that?
> 
> diff --git a/src/util/conf.c b/src/util/conf.c
> index 0c7e556..60cf0b4 100644
> --- a/src/util/conf.c
> +++ b/src/util/conf.c
> @@ -858,6 +858,9 @@ virConfSetValue (virConfPtr conf,
>  {
>      virConfEntryPtr cur, prev = NULL;
> 
> +    if (value && value->type == VIR_CONF_STRING && value->str == NULL)
> +        return -1;
> +
>      cur = conf->entries;
>      while (cur != NULL) {
>          if ((cur->name != NULL) && (STREQ(cur->name, setting))) {

Yeah, that looks like a good safety net


Daniel
-- 
|: Red Hat, Engineering, London   -o-   http://people.redhat.com/berrange/ :|
|: http://libvirt.org  -o-  http://virt-manager.org  -o-  http://ovirt.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505  -o-  F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|




More information about the libvir-list mailing list