aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-cell_broadcast.c
diff options
context:
space:
mode:
authorPascal Quantin <pascal.quantin@gmail.com>2013-08-19 10:39:43 +0000
committerPascal Quantin <pascal.quantin@gmail.com>2013-08-19 10:39:43 +0000
commit81b6d6aab35eabd3c9687f3f2eb37466855fc137 (patch)
treec1b1f9007c72d8b33eea3271e54f7d0f139b7678 /epan/dissectors/packet-cell_broadcast.c
parentb38ec03858d0c15811d2dc843379a61e3554ac9b (diff)
Do not use ephemeral memory when adding a new data source
svn path=/trunk/; revision=51423
Diffstat (limited to 'epan/dissectors/packet-cell_broadcast.c')
-rw-r--r--epan/dissectors/packet-cell_broadcast.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/epan/dissectors/packet-cell_broadcast.c b/epan/dissectors/packet-cell_broadcast.c
index bd5736840b..087575ba1c 100644
--- a/epan/dissectors/packet-cell_broadcast.c
+++ b/epan/dissectors/packet-cell_broadcast.c
@@ -254,7 +254,7 @@ tvbuff_t * dissect_cbs_data(guint8 sms_encoding, tvbuff_t *tvb, proto_tree *tree
tvbuff_t * tvb_out = NULL;
guint8 out_len;
int length = tvb_length(tvb) - offset;
- gchar *utf8_text = NULL;
+ gchar *utf8_text = NULL, *utf8_out;
static unsigned char msgbuf[1024];
guint8 * input_string = tvb_get_ephemeral_string(tvb, offset, length);
GIConv cd;
@@ -268,7 +268,9 @@ tvbuff_t * dissect_cbs_data(guint8 sms_encoding, tvbuff_t *tvb, proto_tree *tree
msgbuf);
msgbuf[out_len] = '\0';
utf8_text = gsm_sms_chars_to_utf8(msgbuf, out_len);
- tvb_out = tvb_new_child_real_data(tvb, utf8_text, out_len, out_len);
+ utf8_out = g_strdup(utf8_text);
+ tvb_out = tvb_new_child_real_data(tvb, utf8_out, out_len, out_len);
+ tvb_set_free_cb(tvb_out, g_free);
add_new_data_source(pinfo, tvb_out, "unpacked 7 bit data");
break;