diff options
author | som <somashekhar.puttagangaiah@intel.com> | 2022-04-04 19:56:49 +0530 |
---|---|---|
committer | Aleksander Morgado <aleksander@aleksander.es> | 2022-04-14 01:22:04 +0200 |
commit | e7c0d7dd8f9e27d8839e428be9e9bd2d035f3c4c (patch) | |
tree | 404a68089248007c650c786e2a66c371a47fb17a | |
parent | 4cb6eb647e218568bebd5c9123974d9a81c5c88d (diff) | |
download | ModemManager-e7c0d7dd8f9e27d8839e428be9e9bd2d035f3c4c.tar.gz |
modem-mbim: update default error when network error is out of range
When the modem sends an error which is outside the range
defined in MBIM_NW_ERROR list then MM should use a default
error(MBIM_NW_ERROR_NONE) instead of crash.
(cherry picked from commit 5c8c1136bd3bad2b542a0b3dc334dbd0686ba10d)
-rw-r--r-- | src/mm-modem-helpers-mbim.c | 29 |
1 files changed, 16 insertions, 13 deletions
diff --git a/src/mm-modem-helpers-mbim.c b/src/mm-modem-helpers-mbim.c index 5cfab7279..3a461f21f 100644 --- a/src/mm-modem-helpers-mbim.c +++ b/src/mm-modem-helpers-mbim.c @@ -290,21 +290,24 @@ GError * mm_mobile_equipment_error_from_mbim_nw_error (MbimNwError nw_error, gpointer log_object) { - MMMobileEquipmentError error_code; const gchar *msg; - /* convert to mobile equipment error */ - error_code = mbim_nw_errors[nw_error]; - if (error_code) - return mm_mobile_equipment_error_for_code (error_code, log_object); - - /* provide a nicer error message on unmapped errors */ - msg = mbim_nw_error_get_string (nw_error); - if (msg) - return g_error_new (MM_MOBILE_EQUIPMENT_ERROR, - MM_MOBILE_EQUIPMENT_ERROR_UNKNOWN, - "Unsupported error (%u): %s", - nw_error, msg); + if (nw_error < G_N_ELEMENTS (mbim_nw_errors)) { + MMMobileEquipmentError error_code; + + /* convert to mobile equipment error */ + error_code = mbim_nw_errors[nw_error]; + if (error_code) + return mm_mobile_equipment_error_for_code (error_code, log_object); + + /* provide a nicer error message on unmapped errors */ + msg = mbim_nw_error_get_string (nw_error); + if (msg) + return g_error_new (MM_MOBILE_EQUIPMENT_ERROR, + MM_MOBILE_EQUIPMENT_ERROR_UNKNOWN, + "Unsupported error (%u): %s", + nw_error, msg); + } /* fallback */ return g_error_new_literal (MM_MOBILE_EQUIPMENT_ERROR, |