diff options
author | Aleksander Morgado <aleksander@aleksander.es> | 2018-01-28 14:08:28 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2018-01-30 07:56:23 +0100 |
commit | 83ff71fcee4daabfd74ff31e5612f74c4996ec5c (patch) | |
tree | 6314ae727b5d38c64efa7446f64e00acafb0f030 | |
parent | b024f6f4d773f8377acddbf594f891f2f863a963 (diff) | |
download | barebox-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.c | 2 |
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; |