neels has submitted this change. (
https://gerrit.osmocom.org/c/osmo-mgw/+/34997?usp=email
)
Change subject: client: replace two assertions with graceful error handling
......................................................................
client: 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(-)
Approvals:
laforge: Looks good to me, but someone else must approve
neels: Looks good to me, approved
fixeria: Looks good to me, but someone else must approve
Jenkins Builder: Verified
pespin: Looks good to me, but someone else must approve
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: 3
Gerrit-Owner: neels <nhofmeyr(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: neels <nhofmeyr(a)sysmocom.de>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-MessageType: merged