diff options
author | Pascal Quantin <pascal.quantin@gmail.com> | 2013-08-19 10:39:43 +0000 |
---|---|---|
committer | Pascal Quantin <pascal.quantin@gmail.com> | 2013-08-19 10:39:43 +0000 |
commit | 81b6d6aab35eabd3c9687f3f2eb37466855fc137 (patch) | |
tree | c1b1f9007c72d8b33eea3271e54f7d0f139b7678 /epan/dissectors/packet-cell_broadcast.c | |
parent | b38ec03858d0c15811d2dc843379a61e3554ac9b (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.c | 6 |
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; |