summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@aleksander.es>2018-01-28 14:08:28 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2018-01-30 07:56:23 +0100
commit83ff71fcee4daabfd74ff31e5612f74c4996ec5c (patch)
tree6314ae727b5d38c64efa7446f64e00acafb0f030
parentb024f6f4d773f8377acddbf594f891f2f863a963 (diff)
downloadbarebox-83ff71fcee4daabfd74ff31e5612f74c4996ec5c.tar.gz
barebox-83ff71fcee4daabfd74ff31e5612f74c4996ec5c.tar.xz
of: base: fix segfault in of_get_machine_compatible()
This is running the barebox sandbox: Thread 1 "barebox" received signal SIGSEGV, Segmentation fault. 0x0000555555579e2b in _strchr (s=s@entry=0x0, c=c@entry=44) at lib/string.c:251 251 for(; *s != (char) c; ++s) (gdb) bt #0 0x0000555555579e2b in _strchr (s=s@entry=0x0, c=c@entry=44) at lib/string.c:251 #1 0x000055555556fd91 in of_get_machine_compatible () at drivers/of/base.c:2380 #2 0x000055555556fda8 in of_init_hostname () at drivers/of/base.c:2389 #3 0x000055555555f9e6 in start_barebox () at common/startup.c:106 #4 0x00005555555a291a in main () (gdb) fr 1 #1 0x000055555556fd91 in of_get_machine_compatible () at drivers/of/base.c:2380 2380 p = strchr(name, ','); Signed-off-by: Aleksander Morgado <aleksander@aleksander.es> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r--drivers/of/base.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/of/base.c b/drivers/of/base.c
index 6a582177bf..10b62890b5 100644
--- a/drivers/of/base.c
+++ b/drivers/of/base.c
@@ -2376,6 +2376,8 @@ const char *of_get_machine_compatible(void)
prop = of_find_property(root_node, "compatible", NULL);
name = of_prop_next_string(prop, NULL);
+ if (!name)
+ return NULL;
p = strchr(name, ',');
return p ? p + 1 : name;