diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2015-09-10 14:59:39 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2015-09-10 14:59:41 +0200 |
commit | 368c3cecb2cc27cba1f9be8d33c886548e49a042 (patch) | |
tree | ee15a56d6d0b83d0cc31d6abf47b342e043a24f5 /src | |
parent | 755a69659c4283c5d572bcdacfa59cd4b55eddb6 (diff) | |
download | dt-utils-368c3cecb2cc27cba1f9be8d33c886548e49a042.tar.gz dt-utils-368c3cecb2cc27cba1f9be8d33c886548e49a042.tar.xz |
barebox-state: Check return value of state_find_type
state_find_type can fail in which case it returns NULL. Check the return
value before dereferencing the pointer.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'src')
-rw-r--r-- | src/barebox-state.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/barebox-state.c b/src/barebox-state.c index f64347c..91a0024 100644 --- a/src/barebox-state.c +++ b/src/barebox-state.c @@ -1896,6 +1896,8 @@ static char *state_get_var(struct state *state, const char *var) return NULL; vtype = state_find_type(sv->type); + if (!vtype) + return NULL; return vtype->get(sv); } @@ -1911,6 +1913,8 @@ static int state_set_var(struct state *state, const char *var, const char *val) return PTR_ERR(sv); vtype = state_find_type(sv->type); + if (!vtype) + return -ENODEV; if (!vtype->set) return -EPERM; @@ -2095,6 +2099,10 @@ int main(int argc, char *argv[]) state_for_each_var(state, v) { struct variable_type *vtype; vtype = state_find_type(v->type); + if (!vtype) { + fprintf(stderr, "no such type: %d\n", v->type); + exit(1); + } printf("%s=%s", v->name, vtype->get(v)); if (verbose) { printf(", type=%s", vtype->type_name); |