From 6030b9bb2e0ed9f3824a34cef548feaefceb9e37 Mon Sep 17 00:00:00 2001 From: "A. Wilcox" Date: Fri, 4 Oct 2019 17:45:10 -0500 Subject: [PATCH 1/2] libqmi-glib: Fix message creation on BE systems Creation of the fake QMUX header wrote the length as a native value, which caused the wrong value to be written on big endian systems. Before, a test run on a ppc64 system gave: ERROR:test-message.c:296:test_message_new_request_from_data: assertion failed: (self) /libqmi-glib/message/new/request: OK /libqmi-glib/message/new/request-from-data: FAIL Adding a g_assert_no_error gave the more helpful message: ERROR:test-message.c:296:test_message_new_request_from_data: assertion failed (error == NULL): QMUX length and buffer length don't match (3072 != 12) (qmi_core_error_quark, 4) After this commit is applied, all tests pass on a big endian ppc64 system. --- src/libqmi-glib/qmi-message.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libqmi-glib/qmi-message.c b/src/libqmi-glib/qmi-message.c index b82069e..41c5b43 100644 --- a/src/libqmi-glib/qmi-message.c +++ b/src/libqmi-glib/qmi-message.c @@ -478,7 +478,7 @@ qmi_message_new_from_data (QmiService service, /* Set up fake QMUX header */ buffer = (struct full_message *)(self->data); buffer->marker = QMI_MESSAGE_QMUX_MARKER; - buffer->qmux.length = buffer_len - 1; + buffer->qmux.length = GUINT16_TO_LE(buffer_len - 1); buffer->qmux.flags = 0; buffer->qmux.service = service; buffer->qmux.client = client_id; -- 2.22.1 From e299023094516a5be3ffb05f66ea90c47e966811 Mon Sep 17 00:00:00 2001 From: "A. Wilcox" Date: Fri, 4 Oct 2019 17:49:07 -0500 Subject: [PATCH 2/2] libqmi-glib: Add small error test to test-message The previous commit was easier to diagnose with the error condition from qmi_message_new_from_data provided. This change adds g_assert_no_error to the test_message_new_request_from_data case so that any future issues can be diagnosed quickly. --- src/libqmi-glib/test/test-message.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/libqmi-glib/test/test-message.c b/src/libqmi-glib/test/test-message.c index b6ea711..e41917a 100644 --- a/src/libqmi-glib/test/test-message.c +++ b/src/libqmi-glib/test/test-message.c @@ -292,7 +292,8 @@ test_message_new_request_from_data (void) qmi = g_byte_array_new (); g_byte_array_append (qmi, expected_buffer, sizeof (expected_buffer)); - self = qmi_message_new_from_data (QMI_SERVICE_DMS, 0x01, qmi, NULL); + self = qmi_message_new_from_data (QMI_SERVICE_DMS, 0x01, qmi, &error); + g_assert_no_error (error); g_assert (self); /* check that the QMUX header contains the right values*/ -- 2.22.1