aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-bacapp.c
diff options
context:
space:
mode:
authoretxrab <etxrab@f5534014-38df-0310-8fa8-9805f1628bb7>2008-03-03 20:15:05 +0000
committeretxrab <etxrab@f5534014-38df-0310-8fa8-9805f1628bb7>2008-03-03 20:15:05 +0000
commit72b27523f375fe882b9b945923560ba6c2a59680 (patch)
tree13d13512b587f872501f6b60f2a30bb9a9a9983e /epan/dissectors/packet-bacapp.c
parentea89754ae6faba49ad064040947af2a9fb317512 (diff)
From Alan McBride :
BACnet handling of readPropertyMultiple request / response. git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@24537 f5534014-38df-0310-8fa8-9805f1628bb7
Diffstat (limited to 'epan/dissectors/packet-bacapp.c')
-rw-r--r--epan/dissectors/packet-bacapp.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/epan/dissectors/packet-bacapp.c b/epan/dissectors/packet-bacapp.c
index 4f8a546e17..af8bb031a1 100644
--- a/epan/dissectors/packet-bacapp.c
+++ b/epan/dissectors/packet-bacapp.c
@@ -4520,6 +4520,7 @@ fReadAccessSpecification (tvbuff_t *tvb, proto_tree *subtree, guint offset)
guint lastoffset = 0;
guint8 tag_no, tag_info;
guint32 lvt;
+ proto_item *tt;
while ((tvb_length_remaining(tvb, offset) > 0)&&(offset>lastoffset)) { /* exit loop if nothing happens inside */
lastoffset = offset;
@@ -4536,6 +4537,8 @@ fReadAccessSpecification (tvbuff_t *tvb, proto_tree *subtree, guint offset)
break;
case 1: /* listOfPropertyReferences */
if (tag_is_opening(tag_info)) {
+ tt = proto_tree_add_text(subtree, tvb, offset, 1, "listOfPropertyReferences");
+ subtree = proto_item_add_subtree(tt, ett_bacapp_value);
offset += fTagHeaderTree (tvb, subtree, offset, &tag_no, &tag_info, &lvt);
offset = fBACnetPropertyReference (tvb, subtree, offset, 1);
break;
@@ -4565,7 +4568,7 @@ fReadAccessResult (tvbuff_t *tvb, proto_tree *tree, guint offset)
if (tag_is_closing(tag_info)) {
offset += fTagHeaderTree (tvb, subtree, offset,
&tag_no, &tag_info, &lvt);
- if (tag_no == 4 || tag_no == 5) subtree = tree; /* Value and error have extra subtree */
+ if ((tag_no == 4 || tag_no == 5) && (subtree != tree)) subtree = subtree->parent; /* Value and error have extra subtree */
continue;
}