diff options
author | Stig Bjørlykke <stig@bjorlykke.org> | 2016-08-25 15:39:40 +0200 |
---|---|---|
committer | Alexis La Goutte <alexis.lagoutte@gmail.com> | 2016-08-25 15:13:26 +0000 |
commit | ce9a4b212ec7b75985cef3b9ab362808e6fd25c5 (patch) | |
tree | b677756cd97f90ee565455b5e85e6fe5067ccecc /epan/dissectors/packet-xmpp-utils.c | |
parent | f597234785f8e4ddf1cf9f7c5d6f5fbacd9631bf (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.c | 17 |
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 |