diff options
author | Gerald Combs <gerald@wireshark.org> | 2009-07-13 20:12:53 +0000 |
---|---|---|
committer | Gerald Combs <gerald@wireshark.org> | 2009-07-13 20:12:53 +0000 |
commit | e3be7b8b2534127cfa72c268a92effd49130c624 (patch) | |
tree | c78cb207cf0fd0b0dfa01b97f3ff6d02563aaae7 /epan/dissectors/packet-giop.c | |
parent | 1d32de944ecf322572658c7b02eb82517d56e10b (diff) |
Check to see if tvb_child_uncompress returns NULL. Fixes bug 3705.
svn path=/trunk/; revision=29086
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 */ + } /* |