diff options
author | Aleksander Morgado <aleksander@aleksander.es> | 2019-12-11 11:54:27 +0100 |
---|---|---|
committer | Aleksander Morgado <aleksander@aleksander.es> | 2019-12-11 15:08:51 +0100 |
commit | 69354f53f180b32c8f183a1217582e557b791220 (patch) | |
tree | 49b231a6835e46af28115bcdc74096c830ff9944 /build-aux | |
parent | 773f1aa9c986e18893e550165aac090466c1840d (diff) |
libqmi-glib,device: check message id before assuming valid response
If the transaction id ends up mismatched between device and libqmi due
to some reason, we may end up assuming a response is of a given type
when it isn't in reality.
Make sure this does not happen, as this would end up triggering a
g_return_val_if_fail() check that returns a NULL reply by the parser
without GError set, and the users of libqmi, like MM here may not
like that:
ERR daemon ModemManager[4842]: __qmi_message_ctl_set_data_format_response_parse: assertion 'qmi_message_get_message_id (message) == QMI_MESSAGE_CTL_SET_DATA_FORMAT' failed
ERR daemon ModemManager[4842]: __qmi_message_ctl_allocate_cid_response_parse: assertion 'qmi_message_get_message_id (message) == QMI_MESSAGE_CTL_ALLOCATE_CID' failed
WARNIN user kernel:[ 687.347162] /tmp/ModemManager.4842.6.1575343251.core core dumped
The internal response_parse() methods used by libqmi should always be
used when we know that the response matches the expected type.
Diffstat (limited to 'build-aux')
-rw-r--r-- | build-aux/qmi-codegen/Message.py | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/build-aux/qmi-codegen/Message.py b/build-aux/qmi-codegen/Message.py index b5a78f1..a2b0e55 100644 --- a/build-aux/qmi-codegen/Message.py +++ b/build-aux/qmi-codegen/Message.py @@ -212,7 +212,7 @@ class Message: '{\n' ' ${container} *self;\n' '\n' - ' g_return_val_if_fail (qmi_message_get_message_id (message) == ${message_id}, NULL);\n' + ' g_assert_cmphex (qmi_message_get_message_id (message), ==, ${message_id});\n' '\n' ' self = g_slice_new0 (${container});\n' ' self->ref_count = 1;\n') |