neels has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-mgw/+/34997?usp=email )
Change subject: replace two assertions with graceful error handling ...................................................................... replace two assertions with graceful error handling A user reports crashes of osmo-bsc upon EV_MDCX. It turns out that there is a lot of error reporting and a distinct possibility to get a NULL return value because of external input. Terminate the FSM instead. FSM termination is the proper way to report a bad error, it signals the parent_term_evt to the FSM parent, which will then be able to act on the failed MGCP operation. Related: SYS#6632 Change-Id: Ia5d8a9aff565399a85a5b116d7029fedcab234e0 --- M src/libosmo-mgcp-client/mgcp_client_fsm.c 1 file changed, 28 insertions(+), 2 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-mgw refs/changes/97/34997/1 diff --git a/src/libosmo-mgcp-client/mgcp_client_fsm.c b/src/libosmo-mgcp-client/mgcp_client_fsm.c index 660f0ad..432ad84 100644 --- a/src/libosmo-mgcp-client/mgcp_client_fsm.c +++ b/src/libosmo-mgcp-client/mgcp_client_fsm.c @@ -364,13 +364,21 @@ switch (event) { case EV_MDCX: msg = make_mdcx_msg(mgcp_ctx); - OSMO_ASSERT(msg); + if (!msg) { + /* make_mdcx_msg() should already have logged the error */ + osmo_fsm_inst_term(fi, OSMO_FSM_TERM_ERROR, NULL); + return; + } rc = mgcp_client_tx(mgcp, msg, mgw_mdcx_resp_cb, fi); new_state = ST_MDCX_RESP; break; case EV_DLCX: msg = make_dlcx_msg(mgcp_ctx); - OSMO_ASSERT(msg); + if (!msg) { + /* make_dlcx_msg() should already have logged the error */ + osmo_fsm_inst_term(fi, OSMO_FSM_TERM_ERROR, NULL); + return; + } rc = mgcp_client_tx(mgcp, msg, mgw_dlcx_resp_cb, fi); new_state = ST_DLCX_RESP; break; -- To view, visit https://gerrit.osmocom.org/c/osmo-mgw/+/34997?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-mgw Gerrit-Branch: master Gerrit-Change-Id: Ia5d8a9aff565399a85a5b116d7029fedcab234e0 Gerrit-Change-Number: 34997 Gerrit-PatchSet: 1 Gerrit-Owner: neels <nhofm...@sysmocom.de> Gerrit-MessageType: newchange