diff options
author | gerald <gerald@f5534014-38df-0310-8fa8-9805f1628bb7> | 2009-07-13 20:12:53 +0000 |
---|---|---|
committer | gerald <gerald@f5534014-38df-0310-8fa8-9805f1628bb7> | 2009-07-13 20:12:53 +0000 |
commit | e608ebb821bb59d34a2b62360dd702bbe3f33da7 (patch) | |
tree | c78cb207cf0fd0b0dfa01b97f3ff6d02563aaae7 /epan/dissectors/packet-giop.c | |
parent | dbf28390bd744562ed40a80685e744b91003e9b6 (diff) |
Check to see if tvb_child_uncompress returns NULL. Fixes bug 3705.
git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@29086 f5534014-38df-0310-8fa8-9805f1628bb7
Diffstat (limited to 'epan/dissectors/packet-giop.c')
-rw-r--r-- | epan/dissectors/packet-giop.c | 102 |
1 files changed, 52 insertions, 50 deletions
diff --git a/epan/dissectors/packet-giop.c b/epan/dissectors/packet-giop.c index 5c1ef54938..de27b2c5b5 100644 --- a/epan/dissectors/packet-giop.c +++ b/epan/dissectors/packet-giop.c @@ -3963,59 +3963,61 @@ static void dissect_giop_common (tvbuff_t * tvb, packet_info * pinfo, proto_tree if (header.flags & 0x08) { payload_tvb = tvb_child_uncompress(tvb, tvb, GIOP_HEADER_SIZE, tvb_length_remaining(tvb, GIOP_HEADER_SIZE ) ); - add_new_data_source (pinfo, payload_tvb, "decompressed Content"); } - switch (header.message_type) - { - - case Request: - if(header.GIOP_version.minor < 2) - { - dissect_giop_request_1_1 (payload_tvb, pinfo, tree, - &header, stream_is_big_endian); - } - else - { - dissect_giop_request_1_2 (payload_tvb, pinfo, tree, - &header, stream_is_big_endian); - } - - break; - - - case Reply: - if(header.GIOP_version.minor < 2) - { - dissect_giop_reply (payload_tvb, pinfo, tree, &header, - stream_is_big_endian); - } - else + if (payload_tvb) { + add_new_data_source (pinfo, payload_tvb, "decompressed Content"); + switch (header.message_type) { - dissect_giop_reply_1_2 (payload_tvb, pinfo, tree, - &header, stream_is_big_endian); - } - break; - case CancelRequest: - dissect_giop_cancel_request(payload_tvb, pinfo, tree, - stream_is_big_endian); - break; - case LocateRequest: - dissect_giop_locate_request(payload_tvb, pinfo, tree, &header, - stream_is_big_endian); - break; - case LocateReply: - dissect_giop_locate_reply(payload_tvb, pinfo, tree, &header, - stream_is_big_endian); - break; - case Fragment: - dissect_giop_fragment(payload_tvb, pinfo, tree, - stream_is_big_endian); - break; - default: - break; - - } /* switch message_type */ + + case Request: + if(header.GIOP_version.minor < 2) + { + dissect_giop_request_1_1 (payload_tvb, pinfo, tree, + &header, stream_is_big_endian); + } + else + { + dissect_giop_request_1_2 (payload_tvb, pinfo, tree, + &header, stream_is_big_endian); + } + + break; + + + case Reply: + if(header.GIOP_version.minor < 2) + { + dissect_giop_reply (payload_tvb, pinfo, tree, &header, + stream_is_big_endian); + } + else + { + dissect_giop_reply_1_2 (payload_tvb, pinfo, tree, + &header, stream_is_big_endian); + } + break; + case CancelRequest: + dissect_giop_cancel_request(payload_tvb, pinfo, tree, + stream_is_big_endian); + break; + case LocateRequest: + dissect_giop_locate_request(payload_tvb, pinfo, tree, &header, + stream_is_big_endian); + break; + case LocateReply: + dissect_giop_locate_reply(payload_tvb, pinfo, tree, &header, + stream_is_big_endian); + break; + case Fragment: + dissect_giop_fragment(payload_tvb, pinfo, tree, + stream_is_big_endian); + break; + default: + break; + + } /* switch message_type */ + } /* |