diff options
author | pascal <pascal@localhost> | 2012-05-11 09:03:22 +0000 |
---|---|---|
committer | pascal <pascal@localhost> | 2012-05-11 09:03:22 +0000 |
commit | b42423a8dc4c61eee2fa8c2ae173a4f65e491ea0 (patch) | |
tree | b87b64bec018abb9ebc07ee3bf53dadb4ef52200 /epan/dissectors/packet-afp.c | |
parent | 1fe00a4c4463253e434d7dd5037cffaf66e63cad (diff) |
From Frank Lahm:
In FPSpotlightRPC packets, check for elements with 0 childs (denoted by L in TLV is sizeof(TLV tag))
https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=7245
svn path=/trunk/; revision=42571
Diffstat (limited to 'epan/dissectors/packet-afp.c')
-rw-r--r-- | epan/dissectors/packet-afp.c | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/epan/dissectors/packet-afp.c b/epan/dissectors/packet-afp.c index 932351b82e..fa894a6998 100644 --- a/epan/dissectors/packet-afp.c +++ b/epan/dissectors/packet-afp.c @@ -4233,17 +4233,25 @@ spotlight_dissect_query_loop(tvbuff_t *tvb, proto_tree *tree, gint offset, guint tvb_get_ephemeral_string(tvb, offset + 8, query_length - 8)); break; case SQ_CPX_TYPE_FILEMETA: - item_query = proto_tree_add_text(tree, tvb, offset, query_length, "filemeta"); - sub_tree = proto_item_add_subtree(item_query, ett_afp_spotlight_query_line); - (void)dissect_spotlight(tvb, sub_tree, offset + 8); + if (query_length <= 8) { + item_query = proto_tree_add_text(tree, tvb, offset, query_length, "filemeta (empty)"); + } else { + item_query = proto_tree_add_text(tree, tvb, offset, query_length, "filemeta"); + sub_tree = proto_item_add_subtree(item_query, ett_afp_spotlight_query_line); + (void)dissect_spotlight(tvb, sub_tree, offset + 8); + } break; } offset += query_length; break; case SQ_TYPE_CNIDS: - item_query = proto_tree_add_text(tree, tvb, offset, query_length, "CNID Array"); - sub_tree = proto_item_add_subtree(item_query, ett_afp_spotlight_query_line); - spotlight_CNID_array(tvb, sub_tree, offset + 8, encoding); + if (query_length <= 8) { + item_query = proto_tree_add_text(tree, tvb, offset, query_length, "CNID Array (empty)"); + } else { + item_query = proto_tree_add_text(tree, tvb, offset, query_length, "CNID Array"); + sub_tree = proto_item_add_subtree(item_query, ett_afp_spotlight_query_line); + spotlight_CNID_array(tvb, sub_tree, offset + 8, encoding); + } offset += query_length; break; default: |