aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-afp.c
diff options
context:
space:
mode:
authorpascal <pascal@localhost>2012-05-11 09:03:22 +0000
committerpascal <pascal@localhost>2012-05-11 09:03:22 +0000
commitb42423a8dc4c61eee2fa8c2ae173a4f65e491ea0 (patch)
treeb87b64bec018abb9ebc07ee3bf53dadb4ef52200 /epan/dissectors/packet-afp.c
parent1fe00a4c4463253e434d7dd5037cffaf66e63cad (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.c20
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: