[libvirt] [PATCH] don't test "res == NULL" after we've already dereferenced it

Daniel P. Berrange berrange at redhat.com
Thu Jan 7 08:28:44 UTC 2010


On Wed, Jan 06, 2010 at 09:55:23PM +0100, Jim Meyering wrote:
> Daniel Veillard wrote:
> 
> > On Wed, Jan 06, 2010 at 12:46:11PM +0100, Jim Meyering wrote:
> >> As the log says, once we've dereferenced it,
> >> there's no point in comparing to NULL.
> >>
> >> >From 463eaf1027a154e71839a67eca85b3ada8b817ff Mon Sep 17 00:00:00 2001
> >> From: Jim Meyering <meyering at redhat.com>
> >> Date: Wed, 6 Jan 2010 12:45:07 +0100
> >> Subject: [PATCH] don't test "res == NULL" after we've already dereferenced it
> >>
> >> * src/xen/proxy_internal.c (xenProxyCommand): It is known to be
> >> non-NULL at that point, so remove the "ret == NULL" guard, and
> >> instead add an assert(ret != NULL), in case future code changes
> >> cause the condition to becomes false.
> >> Include <assert.h>.
> >> ---
> >>  src/xen/proxy_internal.c |    6 ++++--
> >>  1 files changed, 4 insertions(+), 2 deletions(-)
> >>
> >> diff --git a/src/xen/proxy_internal.c b/src/xen/proxy_internal.c
> >> index ec4522b..42b6e91 100644
> >> --- a/src/xen/proxy_internal.c
> >> +++ b/src/xen/proxy_internal.c
> >> @@ -1,7 +1,7 @@
> >>  /*
> >>   * proxy_client.c: client side of the communication with the libvirt proxy.
> >>   *
> >> - * Copyright (C) 2006, 2008, 2009 Red Hat, Inc.
> >> + * Copyright (C) 2006, 2008, 2009, 2010 Red Hat, Inc.
> >>   *
> >>   * See COPYING.LIB for the License of this software
> >>   *
> >> @@ -11,6 +11,7 @@
> >>  #include <config.h>
> >>
> >>  #include <stdio.h>
> >> +#include <assert.h>
> >>  #include <stdlib.h>
> >>  #include <unistd.h>
> >>  #include <errno.h>
> >> @@ -444,7 +445,8 @@ retry:
> >>      /*
> >>       * do more checks on the incoming packet.
> >>       */
> >> -    if ((res == NULL) || (res->version != PROXY_PROTO_VERSION) ||
> >> +    assert (res != NULL);
> >> +    if ((res->version != PROXY_PROTO_VERSION) ||
> >>          (res->len < sizeof(virProxyPacket))) {
> >>          virProxyError(conn, VIR_ERR_INTERNAL_ERROR, "%s",
> >>                        _("Communication error with proxy: malformed packet\n"));
> >
> >   I'm not too fond of adding an assert, res should not be null there or
> > we should already have crashed.
> >
> >   ACK to the change without the new assert line.
> 
> Considering that this is in the daemon and that "bad things"
> have been known to happen via NULL derefs, some would
> argue that an assertion failure is preferable.

No, this code is the client side of the Xen proxy implementation, that is
never used within daemon context.

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