summaryrefslogtreecommitdiff
path: root/epan/dissectors/packet-cell_broadcast.c
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2014-02-25 23:50:22 -0800
committerGuy Harris <guy@alum.mit.edu>2014-02-26 07:50:57 +0000
commitf8f4ebbc910ae167c5ee4e439803f5cc3dcfd0c6 (patch)
treeda27e10766fa1dcde0dbac749a01b160960f9b78 /epan/dissectors/packet-cell_broadcast.c
parent136b73065728d5809356eb8d5bfb25cbaf598455 (diff)
downloadwireshark-f8f4ebbc910ae167c5ee4e439803f5cc3dcfd0c6.tar.gz
Use tvb_get_string_enc() to get UCS-2 strings.
Also, note that the "8-bit" encoding is "user-defined". Change-Id: Ic4786873150d837d8793d2d3d20af50cd0003cc7 Reviewed-on: https://code.wireshark.org/review/399 Reviewed-by: Guy Harris <guy@alum.mit.edu>
Diffstat (limited to 'epan/dissectors/packet-cell_broadcast.c')
-rw-r--r--epan/dissectors/packet-cell_broadcast.c29
1 files changed, 8 insertions, 21 deletions
diff --git a/epan/dissectors/packet-cell_broadcast.c b/epan/dissectors/packet-cell_broadcast.c
index f2424b57d1..113fd77745 100644
--- a/epan/dissectors/packet-cell_broadcast.c
+++ b/epan/dissectors/packet-cell_broadcast.c
@@ -258,9 +258,6 @@ tvbuff_t * dissect_cbs_data(guint8 sms_encoding, tvbuff_t *tvb, proto_tree *tree
tvbuff_t * tvb_out = NULL;
int length = tvb_length(tvb) - offset;
gchar *utf8_text = NULL, *utf8_out;
- guint8 * input_string;
- GIConv cd;
- GError *l_conv_error = NULL;
switch(sms_encoding){
case SMS_ENCODING_7BIT:
@@ -273,29 +270,19 @@ tvbuff_t * dissect_cbs_data(guint8 sms_encoding, tvbuff_t *tvb, proto_tree *tree
break;
case SMS_ENCODING_8BIT:
+ /*
+ * XXX - encoding is "user-defined". Use ASCII?
+ */
tvb_out = tvb_new_subset(tvb, offset, length, length);
break;
case SMS_ENCODING_UCS2:
case SMS_ENCODING_UCS2_LANG:
- input_string = (guint8 *)tvb_memdup(wmem_packet_scope(), tvb, offset, length);
- if ((cd = g_iconv_open("UTF-8","UCS-2BE")) != (GIConv) -1)
- {
- utf8_text = g_convert_with_iconv(input_string, length, cd, NULL, NULL, &l_conv_error);
- if(!l_conv_error)
- {
- tvb_out = tvb_new_subset(tvb, offset, length, length);
- }
- else
- proto_tree_add_text(tree, tvb, offset, length, "CBS String: g_convert_with_iconv FAILED");
-
- g_free(utf8_text);
- g_iconv_close(cd);
- }
- else
- {
- proto_tree_add_text(tree, tvb, offset, length, "CBS String: g_iconv_open FAILED contact wireshark");
- }
+ utf8_text = tvb_get_string_enc(wmem_packet_scope(), tvb, offset, length, ENC_UCS_2|ENC_BIG_ENDIAN);
+ utf8_out = g_strdup(utf8_text);
+ tvb_out = tvb_new_child_real_data(tvb, utf8_out, (guint)strlen(utf8_out), (guint)strlen(utf8_out));
+ tvb_set_free_cb(tvb_out, g_free);
+ add_new_data_source(pinfo, tvb_out, "unpacked UCS-2 data");
break;
default: