summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Mann <mmann78@netscape.net>2017-06-17 11:33:29 -0400
committerPeter Wu <peter@lekensteyn.nl>2017-06-18 19:55:37 +0000
commit74bf217c75ad7f6738e2580971a391b1f38bfd0f (patch)
tree8fdaeb0108eff6339a08e76e9c46095d5d6c8645
parentc59d7701f158bcbfd14bcc155f4c13ce83523251 (diff)
downloadwireshark-74bf217c75ad7f6738e2580971a391b1f38bfd0f.tar.gz
OpenSafety: sanity check calculated length.
Original sanity check was missed for fragmentation Bug: 13755 Change-Id: If9e24e01a119c869b02f198456776c8e6c6f2ad0 Reviewed-on: https://code.wireshark.org/review/22193 Reviewed-by: Michael Mann <mmann78@netscape.net> Petri-Dish: Michael Mann <mmann78@netscape.net> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Roland Knall <rknall@gmail.com> (cherry picked from commit 66c50585e5c10764d0b8a850fd49fa7012346560) Reviewed-on: https://code.wireshark.org/review/22208 Reviewed-by: Peter Wu <peter@lekensteyn.nl>
-rw-r--r--epan/dissectors/packet-opensafety.c28
1 files changed, 14 insertions, 14 deletions
diff --git a/epan/dissectors/packet-opensafety.c b/epan/dissectors/packet-opensafety.c
index ffa20bf289..9049c7d6fb 100644
--- a/epan/dissectors/packet-opensafety.c
+++ b/epan/dissectors/packet-opensafety.c
@@ -1278,25 +1278,25 @@ dissect_opensafety_ssdo_message(tvbuff_t *message_tvb, packet_info *pinfo, proto
item = proto_tree_add_uint_format_value(ssdo_tree, hf_oss_ssdo_payload_size, message_tvb, payloadOffset - 4, 4,
payloadSize, "%d octets total (%d octets in this frame)", payloadSize, calcDataLength);
- if ( fragmentId != 0 && packet->payload.ssdo->sacmd.segmented )
+ if ( calcDataLength >= 0 )
{
- pinfo->fragmented = TRUE;
- frag_msg = fragment_add_seq_check(&os_reassembly_table, message_tvb, payloadOffset, pinfo,
- fragmentId, NULL, 0, calcDataLength, TRUE );
- fragment_add_seq_offset ( &os_reassembly_table, pinfo, fragmentId, NULL, ct );
-
- if ( frag_msg != NULL )
+ if ( fragmentId != 0 && packet->payload.ssdo->sacmd.segmented )
{
- item = proto_tree_add_bytes_format_value(ssdo_tree, hf_oss_ssdo_payload, message_tvb, 0, 0, NULL, "Reassembled" );
- PROTO_ITEM_SET_GENERATED(item);
+ pinfo->fragmented = TRUE;
+ frag_msg = fragment_add_seq_check(&os_reassembly_table, message_tvb, payloadOffset, pinfo,
+ fragmentId, NULL, 0, calcDataLength, TRUE );
+ fragment_add_seq_offset ( &os_reassembly_table, pinfo, fragmentId, NULL, ct );
- ssdo_payload = proto_item_add_subtree(item, ett_opensafety_ssdo_payload);
- process_reassembled_data(message_tvb, 0, pinfo, "Reassembled Message", frag_msg, &oss_frag_items, NULL, ssdo_payload );
+ if ( frag_msg != NULL )
+ {
+ item = proto_tree_add_bytes_format_value(ssdo_tree, hf_oss_ssdo_payload, message_tvb, 0, 0, NULL, "Reassembled" );
+ PROTO_ITEM_SET_GENERATED(item);
+
+ ssdo_payload = proto_item_add_subtree(item, ett_opensafety_ssdo_payload);
+ process_reassembled_data(message_tvb, 0, pinfo, "Reassembled Message", frag_msg, &oss_frag_items, NULL, ssdo_payload );
+ }
}
- }
- if ( (gint) calcDataLength >= (gint) 0 )
- {
proto_tree_add_item(ssdo_tree, hf_oss_ssdo_payload, message_tvb, payloadOffset, calcDataLength, ENC_NA );
} else {
if ( global_opensafety_debug_verbose )