
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