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

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list

Reply via email to