diff options
Diffstat (limited to 'plugins/huawei/mm-broadband-modem-huawei.c')
-rw-r--r-- | plugins/huawei/mm-broadband-modem-huawei.c | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/plugins/huawei/mm-broadband-modem-huawei.c b/plugins/huawei/mm-broadband-modem-huawei.c index 19249a8c..aec926c1 100644 --- a/plugins/huawei/mm-broadband-modem-huawei.c +++ b/plugins/huawei/mm-broadband-modem-huawei.c @@ -2330,21 +2330,20 @@ decode (MMIfaceModem3gppUssd *self, const gchar *reply, GError **error) { - gchar *bin, *utf8; - guint8 *unpacked; - gsize bin_len; - guint32 unpacked_len; + g_autofree gchar *bin = NULL; + g_autofree guint8 *unpacked = NULL; + gsize bin_len = 0; + guint32 unpacked_len; + + bin = mm_utils_hexstr2bin (reply, &bin_len, error); + if (!bin) + return NULL; - bin = mm_utils_hexstr2bin (reply, &bin_len); unpacked = mm_charset_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); - return utf8; + return (gchar*) mm_charset_gsm_unpacked_to_utf8 (unpacked, unpacked_len); } /*****************************************************************************/ |