diff options
author | Neels Hofmeyr <neels@hofmeyr.de> | 2018-04-09 01:35:02 +0200 |
---|---|---|
committer | Neels Hofmeyr <neels@hofmeyr.de> | 2018-04-09 17:57:15 +0200 |
commit | 2bcc873e93be0554694ade1f2ee6ef0ac8011d05 (patch) | |
tree | a21fc0d1af38f868c032a6fe018a3129656aa02e | |
parent | d8f175cd2a1e134d0354341c9ac4d8e5c53171ea (diff) |
osmo_fsm_inst_find_by_name(): guard against strcmp(NULL)
strcmp() *must not* be passed NULL pointers, or we hit:
../../../src/libosmocore/src/fsm.c:123:8: runtime error: null pointer passed as argument 2, which is declared to never be null
ASAN:DEADLYSIGNAL
(Or, alternatively, a segfault.)
If any of the search string or an FSM instance's name string should be NULL,
simply never match.
Technically, an FSM should never have a NULL name, but a current bug actually
allows this (pass NULL id to alloc), which will be addressed by an upcoming
patch. To test for it, we need to first make sure this here doesn't segfault.
Change-Id: I2e5f82c06d1a4727bd93e955366e3b62b2df1b32
-rw-r--r-- | src/fsm.c | 5 |
1 files changed, 5 insertions, 0 deletions
@@ -119,7 +119,12 @@ struct osmo_fsm_inst *osmo_fsm_inst_find_by_name(const struct osmo_fsm *fsm, { struct osmo_fsm_inst *fi; + if (!name) + return NULL; + llist_for_each_entry(fi, &fsm->instances, list) { + if (!fi->name) + continue; if (!strcmp(name, fi->name)) return fi; } |