diff options
Diffstat (limited to 'src/simutil.c')
-rw-r--r-- | src/simutil.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/simutil.c b/src/simutil.c index 4e0d3311..acb2aa2f 100644 --- a/src/simutil.c +++ b/src/simutil.c @@ -765,6 +765,20 @@ unsigned char *comprehension_tlv_builder_get_data( return tlv + tag_size + len_size; } +gboolean validate_utf8_tlv(const unsigned char *tlv) +{ + int len = tlv[1]; + + if (len == 0) + return FALSE; + + /* support both null-terminated and non null-terminated TLV value */ + if (tlv[len + 1] == '\0') + len -= 1; + + return g_utf8_validate_len((const char *)tlv + 2, len, NULL); +} + static char *sim_network_name_parse(const unsigned char *buffer, int length, gboolean *add_ci) { |