aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRonnie Sahlberg <ronnie_sahlberg@ozemail.com.au>2005-07-22 22:56:08 +0000
committerRonnie Sahlberg <ronnie_sahlberg@ozemail.com.au>2005-07-22 22:56:08 +0000
commitbadb5a40a31115cca8dd839b75d2eeada895cc24 (patch)
tree32710cced2d396d2586e58e7f24ef27b91d3bc35
parent336b300d033c7dc9d40027e028f30d627415880c (diff)
remove a redundant tvb_memdup() and fix a potential buffer overflow at the same time.
svn path=/trunk/; revision=14999
-rw-r--r--epan/dissectors/packet-ipdc.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/epan/dissectors/packet-ipdc.c b/epan/dissectors/packet-ipdc.c
index be4a01fae6..adaefbc041 100644
--- a/epan/dissectors/packet-ipdc.c
+++ b/epan/dissectors/packet-ipdc.c
@@ -89,7 +89,6 @@ dissect_ipdc_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
const char *des;
const char *enum_val = "";
- char *tmp_str;
char tmp_tag_text[IPDC_STR_LEN + 1];
const value_string *val_ptr;
guint32 type;
@@ -210,10 +209,9 @@ dissect_ipdc_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
switch (type) {
/* simple IPDC_ASCII strings */
case IPDC_ASCII:
- tmp_str = tvb_memdup(tvb, offset + 2, len);
- strncpy(tmp_tag_text, tmp_str, len);
+ g_assert(len<=IPDC_STR_LEN);
+ tvb_memcpy(tvb, tmp_tag_text, offset+2, len);
tmp_tag_text[len] = 0;
- free(tmp_str);
proto_tree_add_text(tag_tree, tvb, offset,
len + 2, "0x%2.2x: %s: %s", tag, des,
tmp_tag_text);