diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2019-09-12 10:25:35 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2019-09-12 10:30:43 +0200 |
commit | cf7b9c3d15a17c8b74bb37a0f8064aaed65f234d (patch) | |
tree | c1aa57848cd82772425ed53489a3747ef61f06e0 /drivers/of | |
parent | fc45db983faa9b6731c2c57d117339c0063778b4 (diff) | |
download | barebox-cf7b9c3d15a17c8b74bb37a0f8064aaed65f234d.tar.gz barebox-cf7b9c3d15a17c8b74bb37a0f8064aaed65f234d.tar.xz |
of: Fix memory hole in of_find_node_by_reproducible_name()
of_get_reproducible_name() returns an allocated string, so we must free
it.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers/of')
-rw-r--r-- | drivers/of/base.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/drivers/of/base.c b/drivers/of/base.c index 838f530f85..22077fa397 100644 --- a/drivers/of/base.c +++ b/drivers/of/base.c @@ -2306,9 +2306,17 @@ struct device_node *of_find_node_by_reproducible_name(struct device_node *from, { struct device_node *np; - of_tree_for_each_node_from(np, from) - if (!of_node_cmp(of_get_reproducible_name(np), name)) + of_tree_for_each_node_from(np, from) { + char *rep = of_get_reproducible_name(np); + int res; + + res = of_node_cmp(rep, name); + + free(rep); + + if (!res) return np; + } return NULL; } |