aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-smpp.c
diff options
context:
space:
mode:
authorPascal Quantin <pascal.quantin@gmail.com>2015-02-26 13:35:26 +0100
committerPascal Quantin <pascal.quantin@gmail.com>2015-02-26 12:40:21 +0000
commitbcf870e2af08dff1ecab6d80caca2c6a240a04b5 (patch)
tree5a25c3fe29810d87942fbd3f19b301214aad7085 /epan/dissectors/packet-smpp.c
parent29feae5f98ad2853b571a3daa5262b14c5d0c144 (diff)
SMPP: AT_STRINGZ address allocation must use the pinfo pool
Fixes an ASAN failure reported by Alexis Change-Id: I33b21d148e631e8a554882283a1c7284d701af1a Reviewed-on: https://code.wireshark.org/review/7409 Reviewed-by: Pascal Quantin <pascal.quantin@gmail.com>
Diffstat (limited to 'epan/dissectors/packet-smpp.c')
-rw-r--r--epan/dissectors/packet-smpp.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/epan/dissectors/packet-smpp.c b/epan/dissectors/packet-smpp.c
index 97f17eecb0..3c21667b5d 100644
--- a/epan/dissectors/packet-smpp.c
+++ b/epan/dissectors/packet-smpp.c
@@ -1245,16 +1245,15 @@ smpp_handle_string(proto_tree *tree, tvbuff_t *tvb, int field, int *offset)
(*offset) += len;
}
-/* NOTE - caller must free the returned string! */
static const char *
-smpp_handle_string_return(proto_tree *tree, tvbuff_t *tvb, int field, int *offset)
+smpp_handle_string_return(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int field, int *offset)
{
gint len;
const char *str;
len = tvb_strsize(tvb, *offset);
if (len > 1) {
- str = (char *)tvb_get_stringz_enc(wmem_packet_scope(), tvb, *offset, &len, ENC_ASCII);
+ str = (char *)tvb_get_stringz_enc(pinfo->pool, tvb, *offset, &len, ENC_ASCII);
proto_tree_add_string(tree, field, tvb, *offset, len, str);
} else {
str = "";
@@ -1934,10 +1933,10 @@ submit_sm(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo,
smpp_handle_string_z(tree, tvb, hf_smpp_service_type, &offset, "(Default)");
smpp_handle_int1(tree, tvb, hf_smpp_source_addr_ton, &offset);
smpp_handle_int1(tree, tvb, hf_smpp_source_addr_npi, &offset);
- src_str = smpp_handle_string_return(tree, tvb, hf_smpp_source_addr, &offset);
+ src_str = smpp_handle_string_return(tree, tvb, pinfo, hf_smpp_source_addr, &offset);
smpp_handle_int1(tree, tvb, hf_smpp_dest_addr_ton, &offset);
smpp_handle_int1(tree, tvb, hf_smpp_dest_addr_npi, &offset);
- dst_str = smpp_handle_string_return(tree, tvb, hf_smpp_destination_addr, &offset);
+ dst_str = smpp_handle_string_return(tree, tvb, pinfo, hf_smpp_destination_addr, &offset);
flag = tvb_get_guint8(tvb, offset);
udhi = flag & 0x40;
proto_tree_add_uint(tree, hf_smpp_esm_submit_msg_mode,