summaryrefslogtreecommitdiff
path: root/user/libqmi/endian.patch
blob: cf84b481b02b8a4a2baccef61fc344dd5e993a94 (plain) (blame)
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