[libvirt] [PATCH v4 4/7] Add network events to the remote driver

John Ferlan jferlan at redhat.com
Thu Dec 12 11:50:26 UTC 2013


My overnight Coverity run found an issue in the function:

'remoteNetworkBuildEventLifecycle'

On 12/11/2013 05:38 AM, Cédric Bosdonnat wrote:
> ---
>  daemon/libvirtd.h            |   1 +
>  daemon/remote.c              | 139 +++++++++++++++++++++++++++++++++++++++++++
>  src/remote/remote_driver.c   | 127 +++++++++++++++++++++++++++++++++++++++
>  src/remote/remote_protocol.x |  46 +++++++++++++-
>  4 files changed, 312 insertions(+), 1 deletion(-)
> 
<...snip...>
>  
> +static void
> +remoteNetworkBuildEventLifecycle(virNetClientProgramPtr prog ATTRIBUTE_UNUSED,
> +                                 virNetClientPtr client ATTRIBUTE_UNUSED,
> +                                 void *evdata, void *opaque)
> +{
> +    virConnectPtr conn = opaque;
> +    struct private_data *priv = conn->privateData;
> +    remote_network_event_lifecycle_msg *msg = evdata;
> +    virNetworkPtr net;
> +    virObjectEventPtr event = NULL;
> +
> +    net = get_nonnull_network(conn, msg->net);
> +    if (!net)
> +        return;
> +

4920 	

(3) Event returned_null: 	Function "virNetworkEventLifecycleNew(char const *, unsigned char const *, int)" returns null (checked 10 out of 11 times). [details]
(14) Event var_assigned: 	Assigning: "event" = null return value from "virNetworkEventLifecycleNew(char const *, unsigned char const *, int)".
Also see events: 	[example_assign][example_checked][example_assign][example_checked][example_assign][example_checked][example_assign][example_checked][example_assign][example_checked][dereference]

4921 	    event = virNetworkEventLifecycleNew(net->name, net->uuid, msg->event);

> +    event = virNetworkEventLifecycleNew(net->name, net->uuid, msg->event);
> +    virNetworkFree(net);
> +

(15) Event dereference: 	Dereferencing a pointer that might be null "event" when calling "remoteDomainEventQueue(struct private_data *, virObjectEventPtr)". [details]
Also see events: 	[returned_null][example_assign][example_checked][example_assign][example_checked][example_assign][example_checked][example_assign][example_checked][example_assign][example_checked][var_assigned]


> +    remoteDomainEventQueue(priv, event);
> +}
> +
> +

Essentially - you need to check for NULL event.

John




More information about the libvir-list mailing list