diff options
author | Aleksander Morgado <aleksander@aleksander.es> | 2020-12-21 13:52:54 +0100 |
---|---|---|
committer | Aleksander Morgado <aleksander@aleksander.es> | 2021-02-23 11:35:11 +0000 |
commit | a211981d4a12b0ef6cab48b7a04ae9e5674cac01 (patch) | |
tree | 081c71748d5a369e632c1fa15ce6dd6d8c6ce493 | |
parent | 657cabcfce6794d2a2f629d63dbd56fc149dab2e (diff) |
libmm-glib,common-helpers: make hexstr2bin() accept input string length
Optionally given explicitly, and -1 can be used to assume it's
NUL-terminated.
-rw-r--r-- | libmm-glib/mm-common-helpers.c | 9 | ||||
-rw-r--r-- | libmm-glib/mm-common-helpers.h | 2 | ||||
-rw-r--r-- | plugins/altair/mm-modem-helpers-altair-lte.c | 2 | ||||
-rw-r--r-- | plugins/huawei/mm-broadband-modem-huawei.c | 2 | ||||
-rw-r--r-- | plugins/huawei/mm-modem-helpers-huawei.c | 2 | ||||
-rw-r--r-- | src/mm-base-sim.c | 4 | ||||
-rw-r--r-- | src/mm-charsets.c | 2 | ||||
-rw-r--r-- | src/mm-modem-helpers-qmi.c | 2 | ||||
-rw-r--r-- | src/mm-modem-helpers.c | 2 | ||||
-rw-r--r-- | src/mm-sms-part-3gpp.c | 2 | ||||
-rw-r--r-- | src/mm-sms-part-cdma.c | 2 |
11 files changed, 16 insertions, 15 deletions
diff --git a/libmm-glib/mm-common-helpers.c b/libmm-glib/mm-common-helpers.c index b443f1ab..3a97e3be 100644 --- a/libmm-glib/mm-common-helpers.c +++ b/libmm-glib/mm-common-helpers.c @@ -1688,6 +1688,7 @@ mm_utils_hex2byte (const gchar *hex) gchar * mm_utils_hexstr2bin (const gchar *hex, + gssize len, gsize *out_len, GError **error) { @@ -1695,10 +1696,10 @@ mm_utils_hexstr2bin (const gchar *hex, g_autofree gchar *buf = NULL; gsize i; gint a; - gchar *opos; - gsize len; - - len = strlen (hex); + gchar *opos +; + if (len < 0) + len = strlen (hex); /* Length must be a multiple of 2 */ if ((len % 2) != 0) { diff --git a/libmm-glib/mm-common-helpers.h b/libmm-glib/mm-common-helpers.h index d3cf62d7..50d58134 100644 --- a/libmm-glib/mm-common-helpers.h +++ b/libmm-glib/mm-common-helpers.h @@ -181,7 +181,7 @@ gchar *mm_get_string_unquoted_from_match_info (GMatchInfo *match_info, const gchar *mm_sms_delivery_state_get_string_extended (guint delivery_state); gint mm_utils_hex2byte (const gchar *hex); -gchar *mm_utils_hexstr2bin (const gchar *hex, gsize *out_len, GError **error); +gchar *mm_utils_hexstr2bin (const gchar *hex, gssize len, gsize *out_len, GError **error); gchar *mm_utils_bin2hexstr (const guint8 *bin, gsize len); gboolean mm_utils_ishexstr (const gchar *hex); diff --git a/plugins/altair/mm-modem-helpers-altair-lte.c b/plugins/altair/mm-modem-helpers-altair-lte.c index 6d218800..b71b458a 100644 --- a/plugins/altair/mm-modem-helpers-altair-lte.c +++ b/plugins/altair/mm-modem-helpers-altair-lte.c @@ -210,7 +210,7 @@ mm_altair_parse_vendor_pco_info (const gchar *pco_info, GError **error) break; } - pco_payload_bytes = mm_utils_hexstr2bin (pco_payload, &pco_payload_bytes_len, error); + pco_payload_bytes = mm_utils_hexstr2bin (pco_payload, -1, &pco_payload_bytes_len, error); if (!pco_payload_bytes) { g_prefix_error (error, "Invalid PCO payload from PCO info '%s': ", pco_info); break; diff --git a/plugins/huawei/mm-broadband-modem-huawei.c b/plugins/huawei/mm-broadband-modem-huawei.c index aec926c1..feaabd46 100644 --- a/plugins/huawei/mm-broadband-modem-huawei.c +++ b/plugins/huawei/mm-broadband-modem-huawei.c @@ -2335,7 +2335,7 @@ decode (MMIfaceModem3gppUssd *self, gsize bin_len = 0; guint32 unpacked_len; - bin = mm_utils_hexstr2bin (reply, &bin_len, error); + bin = mm_utils_hexstr2bin (reply, -1, &bin_len, error); if (!bin) return NULL; diff --git a/plugins/huawei/mm-modem-helpers-huawei.c b/plugins/huawei/mm-modem-helpers-huawei.c index 1f9fe363..49f5a6ea 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, NULL); + bin = mm_utils_hexstr2bin (buf, -1, &bin_len, NULL); if (!bin || bin_len != 4) goto done; diff --git a/src/mm-base-sim.c b/src/mm-base-sim.c index 95273292..78ffdc62 100644 --- a/src/mm-base-sim.c +++ b/src/mm-base-sim.c @@ -1311,7 +1311,7 @@ parse_mnc_length (const gchar *response, g_autofree gchar *bin = NULL; /* Convert hex string to binary */ - bin = mm_utils_hexstr2bin (hex, &buflen, error); + bin = mm_utils_hexstr2bin (hex, -1, &buflen, error); if (!bin) { g_prefix_error (error, "SIM returned malformed response '%s': ", hex); return 0; @@ -1416,7 +1416,7 @@ parse_spn (const gchar *response, g_autofree gchar *bin = NULL; /* Convert hex string to binary */ - bin = mm_utils_hexstr2bin (hex, &buflen, error); + bin = mm_utils_hexstr2bin (hex, -1, &buflen, error); if (!bin) { g_prefix_error (error, "SIM returned malformed response '%s': ", hex); return NULL; diff --git a/src/mm-charsets.c b/src/mm-charsets.c index f51e92bb..adc80332 100644 --- a/src/mm-charsets.c +++ b/src/mm-charsets.c @@ -169,7 +169,7 @@ mm_modem_charset_hex_to_utf8 (const gchar *src, iconv_from = charset_iconv_from (charset); g_return_val_if_fail (iconv_from != NULL, FALSE); - unconverted = mm_utils_hexstr2bin (src, &unconverted_len, NULL); + unconverted = mm_utils_hexstr2bin (src, -1, &unconverted_len, NULL); if (!unconverted) return NULL; diff --git a/src/mm-modem-helpers-qmi.c b/src/mm-modem-helpers-qmi.c index 4180a268..6820419e 100644 --- a/src/mm-modem-helpers-qmi.c +++ b/src/mm-modem-helpers-qmi.c @@ -1815,7 +1815,7 @@ mm_firmware_unique_id_to_qmi_unique_id (const gchar *unique_id, gsize tmp_len; tmp_len = 0; - tmp = (guint8 *) mm_utils_hexstr2bin (unique_id, &tmp_len, error); + tmp = (guint8 *) mm_utils_hexstr2bin (unique_id, -1, &tmp_len, error); if (!tmp) { g_prefix_error (error, "Unexpected character found in unique id: "); return NULL; diff --git a/src/mm-modem-helpers.c b/src/mm-modem-helpers.c index a2fb07fa..5baaef09 100644 --- a/src/mm-modem-helpers.c +++ b/src/mm-modem-helpers.c @@ -4291,7 +4291,7 @@ mm_3gpp_parse_emergency_numbers (const char *raw, GError **error) return NULL; } - bin = (guint8 *) mm_utils_hexstr2bin (raw, &binlen, error); + bin = (guint8 *) mm_utils_hexstr2bin (raw, -1, &binlen, error); if (!bin) { g_prefix_error (error, "invalid raw emergency numbers list contents: "); return NULL; diff --git a/src/mm-sms-part-3gpp.c b/src/mm-sms-part-3gpp.c index bc4310ee..cdf9a1a0 100644 --- a/src/mm-sms-part-3gpp.c +++ b/src/mm-sms-part-3gpp.c @@ -343,7 +343,7 @@ mm_sms_part_3gpp_new_from_pdu (guint index, gsize pdu_len; /* Convert PDU from hex to binary */ - pdu = (guint8 *) mm_utils_hexstr2bin (hexpdu, &pdu_len, error); + pdu = (guint8 *) mm_utils_hexstr2bin (hexpdu, -1, &pdu_len, error); if (!pdu) { g_prefix_error (error, "Couldn't convert 3GPP PDU from hex to binary: "); return NULL; diff --git a/src/mm-sms-part-cdma.c b/src/mm-sms-part-cdma.c index 39e2cc2f..4275cb8d 100644 --- a/src/mm-sms-part-cdma.c +++ b/src/mm-sms-part-cdma.c @@ -321,7 +321,7 @@ mm_sms_part_cdma_new_from_pdu (guint index, gsize pdu_len; /* Convert PDU from hex to binary */ - pdu = (guint8 *) mm_utils_hexstr2bin (hexpdu, &pdu_len, error); + pdu = (guint8 *) mm_utils_hexstr2bin (hexpdu, -1, &pdu_len, error); if (!pdu) { g_prefix_error (error, "Couldn't convert CDMA PDU from hex to binary: "); return NULL; |