aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-giop.c
diff options
context:
space:
mode:
authorGerald Combs <gerald@wireshark.org>2009-07-13 20:12:53 +0000
committerGerald Combs <gerald@wireshark.org>2009-07-13 20:12:53 +0000
commite3be7b8b2534127cfa72c268a92effd49130c624 (patch)
treec78cb207cf0fd0b0dfa01b97f3ff6d02563aaae7 /epan/dissectors/packet-giop.c
parent1d32de944ecf322572658c7b02eb82517d56e10b (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.c102
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 */
+ }
/*