From 83ff71fcee4daabfd74ff31e5612f74c4996ec5c Mon Sep 17 00:00:00 2001 From: Aleksander Morgado Date: Sun, 28 Jan 2018 14:08:28 +0100 Subject: 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 Signed-off-by: Sascha Hauer --- drivers/of/base.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'drivers/of/base.c') 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; -- cgit v1.2.3