aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGraham Inggs <graham.inggs@uct.ac.za>2011-11-15 11:27:57 -0600
committerDan Williams <dcbw@redhat.com>2011-11-15 11:29:04 -0600
commit71598a628987162196b98124486ad8e728852ec5 (patch)
treed8ed536e8a8f9fa2d7d420c8d654d0eb01a131a4
parent262f0f5e81ae5b346090102acecf642ed0ee09f9 (diff)
huawei: remove padding from USSD responses
Probably needed in generic USSD code.
-rw-r--r--plugins/mm-modem-huawei-gsm.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/plugins/mm-modem-huawei-gsm.c b/plugins/mm-modem-huawei-gsm.c
index 23944c32..124c15cb 100644
--- a/plugins/mm-modem-huawei-gsm.c
+++ b/plugins/mm-modem-huawei-gsm.c
@@ -916,8 +916,11 @@ ussd_decode (MMModemGsmUssd *self, const char* reply, guint scheme)
guint32 unpacked_len;
bin = utils_hexstr2bin (reply, &bin_len);
- unpacked = gsm_unpack ((guint8*)bin, bin_len, 0, &unpacked_len);
- utf8 = (char*)mm_charset_gsm_unpacked_to_utf8 (unpacked, unpacked_len);
+ unpacked = gsm_unpack ((guint8*) bin, (bin_len * 8) / 7, 0, &unpacked_len);
+ /* if the last character in a 7-byte block is padding, then drop it */
+ if ((bin_len % 7 == 0) && (unpacked[unpacked_len - 1] == 0x0d))
+ unpacked_len--;
+ utf8 = (char*) mm_charset_gsm_unpacked_to_utf8 (unpacked, unpacked_len);
g_free (bin);
g_free (unpacked);