diff options
author | Graham Inggs <graham.inggs@uct.ac.za> | 2011-11-15 11:27:57 -0600 |
---|---|---|
committer | Dan Williams <dcbw@redhat.com> | 2011-11-15 11:29:04 -0600 |
commit | 71598a628987162196b98124486ad8e728852ec5 (patch) | |
tree | d8ed536e8a8f9fa2d7d420c8d654d0eb01a131a4 | |
parent | 262f0f5e81ae5b346090102acecf642ed0ee09f9 (diff) |
huawei: remove padding from USSD responses
Probably needed in generic USSD code.
-rw-r--r-- | plugins/mm-modem-huawei-gsm.c | 7 |
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); |