diff options
author | Burt P <pburt0@gmail.com> | 2017-07-25 14:33:49 -0500 |
---|---|---|
committer | Leandro A. F. Pereira <leandro@hardinfo.org> | 2017-07-25 19:02:32 -0700 |
commit | 81ae37c58709cf1396b09e5136acfc8a0c259476 (patch) | |
tree | f3e502ab9841dd0b1815ef4848d226cba87037ab /modules/devices/devicetree/dt_util.c | |
parent | 8e4746423c20b525671998b1bc94b3b6d8ec78d6 (diff) |
device tree: fix crash when device tree is not found
* check if device tree was found before add_keys()
* UNKIFNULL(model) before strcmp
* make UNKIFNULL() STRIFNULL() EMPIFNULL() macros more generic
Signed-off-by: Burt P <pburt0@gmail.com>
Diffstat (limited to 'modules/devices/devicetree/dt_util.c')
-rw-r--r-- | modules/devices/devicetree/dt_util.c | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/modules/devices/devicetree/dt_util.c b/modules/devices/devicetree/dt_util.c index 6ef41bd6..619e63be 100644 --- a/modules/devices/devicetree/dt_util.c +++ b/modules/devices/devicetree/dt_util.c @@ -221,19 +221,24 @@ const char *dtr_find_device_tree_root() { return candidates[i]; i++; } - return "/did/not/find/device-tree"; + return NULL; } dtr *dtr_new_x(char *base_path, int fast) { dtr *dt = malloc(sizeof(dtr)); if (dt != NULL) { memset(dt, 0, sizeof(dtr)); + dt->log = strdup(""); + + if (base_path == NULL) + base_path = DTR_ROOT; + if (base_path != NULL) dt->base_path = strdup(base_path); - else - dt->base_path = strdup(DTR_ROOT); - - dt->log = strdup(""); + else { + dtr_msg(dt, "%s", "Device Tree not found."); + return dt; + } /* build alias and phandle lists */ dt->aliases = NULL; @@ -263,6 +268,14 @@ void dtr_free(dtr *s) { } } +int dtr_was_found(dtr *s) { + if (s != NULL) { + if (s->base_path != NULL) + return 1; + } + return 0; +} + void dtr_msg(dtr *s, char *fmt, ...) { gchar *buf, *tmp; va_list args; |