aboutsummaryrefslogtreecommitdiff
path: root/plugins/huawei
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/huawei')
-rw-r--r--plugins/huawei/mm-broadband-modem-huawei.c19
-rw-r--r--plugins/huawei/mm-modem-helpers-huawei.c2
2 files changed, 10 insertions, 11 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);
}
/*****************************************************************************/
diff --git a/plugins/huawei/mm-modem-helpers-huawei.c b/plugins/huawei/mm-modem-helpers-huawei.c
index 2cd94e6a..1f9fe363 100644
--- a/plugins/huawei/mm-modem-helpers-huawei.c
+++ b/plugins/huawei/mm-modem-helpers-huawei.c
@@ -188,7 +188,7 @@ match_info_to_ip4_addr (GMatchInfo *match_info,
else
g_assert_not_reached ();
- bin = mm_utils_hexstr2bin (buf, &bin_len);
+ bin = mm_utils_hexstr2bin (buf, &bin_len, NULL);
if (!bin || bin_len != 4)
goto done;