Skip to contentSkip to conversation

mesh: Fix double-free

PATCH Superseded Brian Gix 1 participant 1 message May 20, 2020 Bluetooth drivers

v1 of 2 Superseded Latest is v2 →

lore
Share & tools
lore

Brian Gix

author
#0 lore raw

PATCH 1/1 mesh: Fix double-free

Fixing a prior memory leak created a double-free error when destroying the NVM sorage of a node. We have two situations where we want to discard a nodes dytnamic memory:

1. When the node is being deleted at runtime. This causes release of both dynamic memory and NVM storage.

2. During shutdown, we release dynamic memory only.

This patch ensures that after node deletion releases dynamic memory, the pointers to it are cleared, avoiding a second free attempt.

---
 mesh/node.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
mesh/node.c +3 -1
index 2b4b3a563..03f4d342b 100644
@@ -352,8 +352,10 @@ void node_remove(struct mesh_node *node)
 
 	l_queue_remove(nodes, node);
 
-	if (node->cfg)
+	if (node->cfg) {
 		mesh_config_destroy(node->cfg);
+		node->cfg = NULL;
+	}
 
 	free_node_resources(node);
 }
Signature · 1 line
2.25.4