Fix: sessiond: ust-registry: dereference of NULL pointer on allocation failure
authorJérémie Galarneau <jeremie.galarneau@efficios.com>
Wed, 10 Feb 2021 19:20:34 +0000 (14:20 -0500)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Fri, 19 Feb 2021 16:43:41 +0000 (11:43 -0500)
Coverity reports:
1445771 Dereference after null check
Either the check against null is unnecessary, or there may be a null pointer dereference.
In ust_registry_channel_add: Pointer is checked against null but then dereferenced anyway (CWE-476)

Reported-by: Coverity Scan
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Change-Id: I3976e0d7b059b47ca233bc9a20585eff2e1290fc

src/bin/lttng-sessiond/ust-registry.c

index 2013902e9effa52b6e3c38c1d95ef03b3f68221b..205eef6aa625eccdde4426898e72d4f95c31d02c 100644 (file)
@@ -728,13 +728,16 @@ static void destroy_channel(struct ust_registry_channel *chan, bool notif)
                }
        }
 
-       rcu_read_lock();
-       /* Destroy all event associated with this registry. */
-       cds_lfht_for_each_entry(chan->ht->ht, &iter.iter, event, node.node) {
-               /* Delete the node from the ht and free it. */
-               ust_registry_destroy_event(chan, event);
+       if (chan->ht) {
+               rcu_read_lock();
+               /* Destroy all event associated with this registry. */
+               cds_lfht_for_each_entry(
+                               chan->ht->ht, &iter.iter, event, node.node) {
+                       /* Delete the node from the ht and free it. */
+                       ust_registry_destroy_event(chan, event);
+               }
+               rcu_read_unlock();
        }
-       rcu_read_unlock();
        call_rcu(&chan->rcu_head, destroy_channel_rcu);
 }
 
This page took 0.026197 seconds and 4 git commands to generate.