1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
From 6030b9bb2e0ed9f3824a34cef548feaefceb9e37 Mon Sep 17 00:00:00 2001
From: "A. Wilcox" <AWilcox@Wilcox-Tech.com>
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" <AWilcox@Wilcox-Tech.com>
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
|