aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-xmpp-utils.c
diff options
context:
space:
mode:
authorStig Bjørlykke <stig@bjorlykke.org>2016-08-25 15:39:40 +0200
committerAlexis La Goutte <alexis.lagoutte@gmail.com>2016-08-25 15:13:26 +0000
commitce9a4b212ec7b75985cef3b9ab362808e6fd25c5 (patch)
treeb677756cd97f90ee565455b5e85e6fe5067ccecc /epan/dissectors/packet-xmpp-utils.c
parentf597234785f8e4ddf1cf9f7c5d6f5fbacd9631bf (diff)
xmpp/xml: Store item length in xml_frame.
The created XML proto_item can be faked (if not visible and not referenced), so ensure we store the correct item length to be used in XMPP. This will avoid an invalid "Malformed Packet" for some XMPP packets. Change-Id: I79d805b725dbeb93f26a38b72bdcc84187aee16f Reviewed-on: https://code.wireshark.org/review/17324 Petri-Dish: Stig Bjørlykke <stig@bjorlykke.org> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Alexis La Goutte <alexis.lagoutte@gmail.com>
Diffstat (limited to 'epan/dissectors/packet-xmpp-utils.c')
-rw-r--r--epan/dissectors/packet-xmpp-utils.c17
1 files changed, 3 insertions, 14 deletions
diff --git a/epan/dissectors/packet-xmpp-utils.c b/epan/dissectors/packet-xmpp-utils.c
index 564471c752..71832a6791 100644
--- a/epan/dissectors/packet-xmpp-utils.c
+++ b/epan/dissectors/packet-xmpp-utils.c
@@ -536,12 +536,8 @@ xmpp_xml_frame_to_element_t(xml_frame_t *xml_frame, xmpp_element_t *parent, tvbu
g_hash_table_insert(node->namespaces, (gpointer)"", (gpointer)"jabber:client");
}
- if(xml_frame->item != NULL)
- {
- node->length = xml_frame->item->finfo->length;
- }
-
node->offset = xml_frame->start_offset;
+ node->length = xml_frame->length;
tt = tvbparse_init(tvb,node->offset,-1,NULL,want_ignore);
@@ -573,12 +569,8 @@ xmpp_xml_frame_to_element_t(xml_frame_t *xml_frame, xmpp_element_t *parent, tvbu
tvb_memcpy(child->value, value, 0, l);
}
- if(child->item)
- {
- attr->length = child->item->finfo->length;
- }
-
attr->offset = child->start_offset;
+ attr->length = child->length;
attr->value = value;
attr->name = wmem_strdup(wmem_packet_scope(), child->name_orig_case);
@@ -618,11 +610,8 @@ xmpp_xml_frame_to_element_t(xml_frame_t *xml_frame, xmpp_element_t *parent, tvbu
data->value = value;
- if(child->item)
- {
- data->length = child->item->finfo->length;
- }
data->offset = child->start_offset;
+ data->length = child->length;
node->data = data;
}
} else