uqmi: corrected too short received SMS
authorHenrik Ginstmark <henrik@ginstmark.se>
Fri, 11 Mar 2022 23:33:54 +0000 (00:33 +0100)
committerDaniel Golle <daniel@makrotopia.org>
Sat, 12 Mar 2022 10:44:29 +0000 (10:44 +0000)
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@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@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@ginstmark.se>
commands-wms.c

index 700d79ff9636c3cdb06ef34d33c3f3ce21d226dc..a58fd6a64f31c5f4c7a5e28c7b05e43d44addbbf 100644 (file)
@@ -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);
 }