aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/xmm/tests
diff options
context:
space:
mode:
authorAleksander Morgado <aleksandermj@chromium.org>2023-02-21 13:51:42 +0000
committerAleksander Morgado <aleksander@aleksander.es>2023-02-21 14:59:01 +0000
commitfbd79a278bf444ac8737ae91047a5f6f48a99cea (patch)
tree6ca8e6e1784ec4b55970866eafcd15824947f5d8 /src/plugins/xmm/tests
parent7837944e257037bb1d4a9b2220bdc82fc2f5c8bf (diff)
xmm: fix crash parsing XACT? response
Ensure we don't assert when processing an unexpected response. We were not correctly handling the case where g_match_info_matches() was not succeeding. 0x00007d8be96cc462 (libc.so.6 + 0x00028462) abort 0x00007d8be995ff01 (libglib-2.0.so.0 - gtestutils.c: 3253) g_assertion_message 0x00007d8be995ff64 (libglib-2.0.so.0 - gtestutils.c: 3279) g_assertion_message_expr 0x00007d8be858086a (libmm-shared-xmm.so - mm-modem-helpers-xmm.c: 467) mm_xmm_parse_xact_query_response 0x00007d8be857d4e0 (libmm-shared-xmm.so - mm-shared-xmm.c: 310) xact_query_bands_ready 0x00007d8be9a79463 (libgio-2.0.so.0 - gsimpleasyncresult.c: 802) g_simple_async_result_complete 0x00005c8d2a11e9b9 (ModemManager - mm-base-modem-at.c: 538) at_command_ready 0x00007d8be9a79463 (libgio-2.0.so.0 - gsimpleasyncresult.c: 802) g_simple_async_result_complete 0x00005c8d2a19376b (ModemManager - mm-port-serial-at.c) serial_command_ready 0x00007d8be9a79463 (libgio-2.0.so.0 - gsimpleasyncresult.c: 802) g_simple_async_result_complete 0x00005c8d2a18f93f (ModemManager - mm-port-serial.c: 139) command_context_complete_and_free 0x00005c8d2a192985 (ModemManager - mm-port-serial.c: 753) port_serial_got_response 0x00005c8d2a192dff (ModemManager - mm-port-serial.c: 924) common_input_available 0x00007d8be993e3fc (libglib-2.0.so.0 - gmain.c: 3417) g_main_context_dispatch 0x00007d8be993e704 (libglib-2.0.so.0 - gmain.c: 4211) g_main_context_iterate 0x00007d8be993e978 (libglib-2.0.so.0 - gmain.c: 4411) g_main_loop_run 0x00005c8d2a105e66 (ModemManager - main.c: 217) main 0x00007d8be96cc6c5 (libc.so.6 + 0x000286c5) __libc_init_first 0x00007d8be96cc781 (libc.so.6 + 0x00028781) __libc_start_main 0x00005c8d2a105b80 (ModemManager + 0x00061b80) _start
Diffstat (limited to 'src/plugins/xmm/tests')
-rw-r--r--src/plugins/xmm/tests/test-modem-helpers-xmm.c33
1 files changed, 31 insertions, 2 deletions
diff --git a/src/plugins/xmm/tests/test-modem-helpers-xmm.c b/src/plugins/xmm/tests/test-modem-helpers-xmm.c
index e40ffcab..27738d2d 100644
--- a/src/plugins/xmm/tests/test-modem-helpers-xmm.c
+++ b/src/plugins/xmm/tests/test-modem-helpers-xmm.c
@@ -274,6 +274,33 @@ test_xact_query_3g_4g (void)
expected_bands, G_N_ELEMENTS (expected_bands));
}
+static void
+test_xact_query_no_match_mode (void)
+{
+ g_autoptr(GError) error = NULL;
+ gboolean ret;
+ MMModemModeCombination mode = {
+ .allowed = MM_MODEM_MODE_NONE,
+ .preferred = MM_MODEM_MODE_NONE,
+ };
+
+ ret = mm_xmm_parse_xact_query_response ("something here", &mode, NULL, &error);
+ g_assert (error);
+ g_assert (!ret);
+}
+
+static void
+test_xact_query_no_match_bands (void)
+{
+ g_autoptr(GError) error = NULL;
+ g_autoptr(GArray) bands = NULL;
+ gboolean ret;
+
+ ret = mm_xmm_parse_xact_query_response ("something here", NULL, &bands, &error);
+ g_assert (error);
+ g_assert (!ret);
+}
+
/*****************************************************************************/
#define XACT_SET_TEST_MAX_BANDS 6
@@ -764,8 +791,10 @@ int main (int argc, char **argv)
g_test_add_func ("/MM/xmm/xact/test/3g-4g", test_xact_test_3g_4g);
g_test_add_func ("/MM/xmm/xact/test/2g-3g-4g", test_xact_test_2g_3g_4g);
- g_test_add_func ("/MM/xmm/xact/query/3g-only", test_xact_query_3g_only);
- g_test_add_func ("/MM/xmm/xact/query/3g-4g", test_xact_query_3g_4g);
+ g_test_add_func ("/MM/xmm/xact/query/3g-only", test_xact_query_3g_only);
+ g_test_add_func ("/MM/xmm/xact/query/3g-4g", test_xact_query_3g_4g);
+ g_test_add_func ("/MM/xmm/xact/query/no-match/mode", test_xact_query_no_match_mode);
+ g_test_add_func ("/MM/xmm/xact/query/no-match/bands", test_xact_query_no_match_bands);
g_test_add_func ("/MM/xmm/xact/set", test_xact_set);