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>
Wed, 10 Feb 2021 19:38:09 +0000 (14:38 -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 2e33b9575f9d1e298af8eb539c510997c2e1588c..1b1e65eba1327f06e90344020e490784363ec694 100644 (file)
@@ -739,13 +739,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.025976 seconds and 4 git commands to generate.