diff options
author | Frederic Martinsons <frederic.martinsons@sigfox.com> | 2020-12-20 18:11:06 +0100 |
---|---|---|
committer | Aleksander Morgado <aleksander@aleksander.es> | 2020-12-21 13:00:40 +0000 |
commit | 18b72a046e89d00d7e7b9f2d718c43d64e595de0 (patch) | |
tree | 42cdd907168810f0aea7d4b080ffa7e56d48c44f /cli | |
parent | 2f53a08e5f1eef8c1892dc55f32fbacba85565a0 (diff) |
mmcli: don't assume that mm_object_peek_modem or mm_object_get_modem return non null
This very peculiar case can happen when an intermediate initiliazition step
of a modem fails.
The ModemManager daemon should always expose the modem interface but let not
assume that in mmcli and protect these calls.
Signed-off-by: Frederic Martinsons <frederic.martinsons@sigfox.com>
Diffstat (limited to 'cli')
-rw-r--r-- | cli/mmcli-common.c | 4 | ||||
-rw-r--r-- | cli/mmcli-manager.c | 9 |
2 files changed, 10 insertions, 3 deletions
diff --git a/cli/mmcli-common.c b/cli/mmcli-common.c index a5402431..4163f42f 100644 --- a/cli/mmcli-common.c +++ b/cli/mmcli-common.c @@ -205,7 +205,9 @@ find_modem (MMManager *manager, MMModem *modem; obj = MM_OBJECT (l->data); - modem = MM_MODEM (mm_object_get_modem (obj)); + modem = mm_object_get_modem (obj); + if (!modem) + continue; if (modem_any || (modem_path && g_str_equal (mm_object_get_path (obj), modem_path)) || diff --git a/cli/mmcli-manager.c b/cli/mmcli-manager.c index 01d2972c..011c8c11 100644 --- a/cli/mmcli-manager.c +++ b/cli/mmcli-manager.c @@ -332,9 +332,14 @@ output_modem_info (MMObject *obj, gchar *extra; const gchar *manufacturer; const gchar *model; + MMModem *modem; - manufacturer = mm_modem_get_manufacturer (mm_object_peek_modem (obj)); - model = mm_modem_get_model (mm_object_peek_modem (obj)); + modem = mm_object_peek_modem (obj); + if (!modem) + return; + + manufacturer = mm_modem_get_manufacturer (modem); + model = mm_modem_get_model (modem); extra = g_strdup_printf ("[%s] %s", manufacturer ? manufacturer : "manufacturer unknown", model ? model : "model unknown"); |