From e3be7b8b2534127cfa72c268a92effd49130c624 Mon Sep 17 00:00:00 2001 From: Gerald Combs Date: Mon, 13 Jul 2009 20:12:53 +0000 Subject: Check to see if tvb_child_uncompress returns NULL. Fixes bug 3705. svn path=/trunk/; revision=29086 --- epan/dissectors/packet-giop.c | 102 +++++++++++++++++++++--------------------- 1 file changed, 52 insertions(+), 50 deletions(-) (limited to 'epan/dissectors/packet-giop.c') 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 */ + } /* -- cgit v1.2.3