diff options
author | Dan Williams <dan@bigw.org> | 2025-02-06 02:42:31 +0000 |
---|---|---|
committer | Dan Williams <dan@bigw.org> | 2025-02-06 02:42:31 +0000 |
commit | 6aac8d4201b5050e2b40017b164810e86b74b88b (patch) | |
tree | 7d6332b670e7f825f560bf005ff3805fe3d0e834 | |
parent | 0743d88d4261eee18445799c552fff92debfaef1 (diff) | |
parent | ef5fe9b8d5a273ff91b573fc40b223605c618c1e (diff) |
Merge request !1286 from 'aleksander/fix-assert'
broadband-modem: exit with error if enable() while in unknown state
https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/merge_requests/1286
-rw-r--r-- | src/mm-broadband-modem.c | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/src/mm-broadband-modem.c b/src/mm-broadband-modem.c index 6f06b8f3..c4140015 100644 --- a/src/mm-broadband-modem.c +++ b/src/mm-broadband-modem.c @@ -12660,21 +12660,25 @@ enable (MMBaseModem *self, /* Check state before launching modem enabling */ switch (MM_BROADBAND_MODEM (self)->priv->modem_state) { case MM_MODEM_STATE_UNKNOWN: - /* We should never have a UNKNOWN->ENABLED transition */ - g_assert_not_reached (); - break; + /* We may have a UNKNOWN->ENABLED transition here if the request + * comes after having flagged the modem as invalid. Just error out + * gracefully. */ + g_task_return_new_error (task, MM_CORE_ERROR, MM_CORE_ERROR_WRONG_STATE, + "Cannot enable modem: unknown state"); + g_object_unref (task); + return; case MM_MODEM_STATE_FAILED: g_task_return_new_error (task, MM_CORE_ERROR, MM_CORE_ERROR_WRONG_STATE, "Cannot enable modem: initialization failed"); g_object_unref (task); - break; + return; case MM_MODEM_STATE_LOCKED: g_task_return_new_error (task, MM_CORE_ERROR, MM_CORE_ERROR_WRONG_STATE, "Cannot enable modem: device locked"); g_object_unref (task); - break; + return; case MM_MODEM_STATE_INITIALIZING: case MM_MODEM_STATE_DISABLED: @@ -12684,7 +12688,7 @@ enable (MMBaseModem *self, case MM_MODEM_STATE_ENABLING: g_assert_not_reached (); - break; + return; case MM_MODEM_STATE_ENABLED: case MM_MODEM_STATE_SEARCHING: @@ -12695,7 +12699,7 @@ enable (MMBaseModem *self, /* Just return success, don't relaunch enabling */ g_task_return_boolean (task, TRUE); g_object_unref (task); - break; + return; default: g_assert_not_reached (); |