[PATCH] uqmi: corrected too short received SMS
Henrik Ginstmark
henrik at ginstmark.se
Fri Mar 11 15:33:54 PST 2022
When characters with ascii values bigger than 0x7f are used, the
length of the received text
message is too short.
Test message sent: 123äÄ123
Before correction:
root at OpenWrt:/tmp# uqmi -d /dev/cdc-wdm0 --get-message 20
Raw text: 31 32 33 7b 5b 31 32 33
{
"smsc": "+46724400001",
"sender": "+46xxxxxxxxx",
"timestamp": "2022-03-11 18:48:10",
"text": "123äÄ1"
}
after correction:
root at OpenWrt:/tmp# uqmi -d /dev/cdc-wdm0 --get-message 20
Raw text: 31 32 33 7b 5b 31 32 33
{
"smsc": "+46724400001",
"sender": "+46xxxxxxxxx",
"timestamp": "2022-03-11 18:48:10",
"text": "123äÄ123"
}
Signed-off-by: Henrik Ginstmark <henrik at ginstmark.se>
---
uqmi/src/commands-wms.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/uqmi/src/commands-wms.c b/uqmi/src/commands-wms.c
index 700d79f..a58fd6a 100644
--- a/uqmi/src/commands-wms.c
+++ b/uqmi/src/commands-wms.c
@@ -222,8 +222,8 @@ static int decode_udh(const unsigned char *data)
static void decode_7bit_field(char *name, const unsigned char *data,
int data_len, int bit_offset)
{
char *dest = blobmsg_alloc_string_buffer(&status, name, 3 *
data_len + 2);
- pdu_decode_7bit_str(dest, data, CEILDIV(data_len * 7, 8), bit_offset);
- dest[data_len] = 0;
+ int out_len = pdu_decode_7bit_str(dest, data, CEILDIV(data_len
* 7, 8), bit_offset);
+ dest[out_len] = 0;
blobmsg_add_string_buffer(&status);
}
--
2.34.1
More information about the openwrt-devel
mailing list